Работа с Word из 1С

Для заключения договоров с контрагентами был разработан договор в Word, который менеджеры заполняли вручную. Была поставлена задача автоматизировать этот процесс.
Для начала потребовалось создать шаблон из документа договора, проще говоря – сохранить уже существующий договор с расширением “Шаблон Word 97-2003 (*.dot)”. В местах, где необходима подстановка указываем параметры. Например:

[Организация], именуемое в дальнейшем «Исполнитель», в лице директора [ФИОДиректора], действующей на основании Устава, и [Заказчик], именуемое в дальнейшем «Заказчик», в лице директора [ФИОДиректораЗаказчика]

Где [Организация], [ФИОДиректора], [Заказчик] и [ФИОДиректораЗаказчика] это и есть наши параметры. Параметры можно указывать любым удобным нам способом, например можно вместо [] использовать {} или <>.
Оформленный таким образом документ загружаем в 1С в качестве макета с типом макета – Active document.

Далее в соответствующем обработчике события (например, в обработчике нажатия на кнопку Создать договор) размещается следующий код:

[php]
Процедура ПечатьДоговора()
Договор = ПолучитьМакет("МакетШаблонаWord");
// Получить объект из макета.
MSWord = Договор.Получить();

Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();

//Определим имена
Организация = "ООО Шпаргалка"
ФИОДиректора = "Иванов Иван Иванович";
Заказчик = СокрЛП(Контрагент.НаименованиеПолное);
ФИОДиректораЗаказчика = "Васин Василий Васильевич";

//Получить объект, который будем использовать для поиска и замены.
Замена = Документ.Content.Find;

//Заменить заранее определенные ключевые конструкции на требуемый текст.
Замена.Execute("[Организация ]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик, 2);
Замена.Execute("[ФИОДиректора]", Ложь, Истина, Ложь, , , Истина, , Ложь, ФИОДиректора, 2);
Замена.Execute("[Заказчик]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик, 2);
Замена.Execute("[ФИОДиректораЗаказчика ]", Ложь, Истина, Ложь, , , Истина, , Ложь, ФИОДиректораЗаказчика, 2);

MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;

КонецПроцедуры
[/php]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *