Snippets

Василий Котов Заполнение шаблона WORD

Created by Василий Котов last modified
//Вариант 1
&НаКлиенте
Процедура ЗаменитьОткрыть()
	
	COMОбъект = ПолучитьCOMОбъект("D:\От.docx");
	
	СтрокаПоиска = "{v8 fio}";
	СтрокаЗамены = "Пупкин Иван Иваныч";
	
	Замена = COMОбъект.Content.Find;
	Замена.Execute(СтрокаПоиска, , , , , , , , , СтрокаЗамены, 2);
	
	COMОбъект.Application.Visible = 1; //указываем, что надо показать юзеру наш COM-объект
	COMОбъект.Activate();
	
КонецПроцедуры
/////////////////////////////////

//Вариант 2
&НаКлиенте
Процедура ПоказатьДокументMSWord(COMСоединение) Экспорт
	
	COMСоединение.Application.Selection.Collapse();
	COMСоединение.Application.Visible = Истина;
	COMСоединение.Activate();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПараметры(Знач COMОбъект, Знач ДанныеОбъекта = Неопределено) Экспорт
	
	Если ДанныеОбъекта = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Для Каждого ПараметрЗначение Из ДанныеОбъекта Цикл
		Если ТипЗнч(ПараметрЗначение.Значение) <> Тип("Массив") Тогда
			Заменить(COMОбъект, ПараметрЗначение.Ключ, ПараметрЗначение.Значение);
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура Заменить(Object, Знач СтрокаПоиска, Знач СтрокаЗамены)
	
	СтрокаПоиска = "{v8 " + СтрокаПоиска + "}";
	СтрокаЗамены = Строка(СтрокаЗамены);
	
	Object.Select();
	Selection = Object.Application.Selection;
	FindObject = Selection.Find;
	FindObject.ClearFormatting();
	Пока FindObject.Execute(СтрокаПоиска) Цикл
		Если ПустаяСтрока(СтрокаЗамены) Тогда
			Selection.Delete();
		Иначе
			Selection.TypeText(СтрокаЗамены);
		КонецЕсли;
	КонецЦикла;
	
	Selection.Collapse();
	
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
	
	COMОбъект = ПолучитьCOMОбъект("D:\От.docx");
	
	ДанныеОбъекта = Новый Структура;
	ДанныеОбъекта.Вставить("fio", "Пупкин Иван Иваныч");
	ДанныеОбъекта.Вставить("num", 12345);
	ЗаполнитьОткрыть(COMОбъект, ДанныеОбъекта);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьОткрыть(COMОбъект, ДанныеОбъекта)
	
	ЗаполнитьПараметры(COMОбъект, ДанныеОбъекта);
	ПоказатьДокументMSWord(COMОбъект);
	
КонецПроцедуры

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.