Для заключения договоров с контрагентами разработан типовой договор (шаблон).
При его оформлении (для реального контрагента) в определенные места документа вставляются данные о контрагенте.
Подобные фрагменты определены следующим образом: <ИмяОбласти> (на практике можно использовать другие способы, в нашем примере квадратные скобки [ ]).
Пример договора:
Договор
на оказание услуг
Я, [Заказчик], с одной стороны, именуемый в дальнейшем ЗАКАЗЧИК, и [Исполнитель],
с другой стороны, именуемый в дальнейшем ИСПОЛНИТЕЛЬ, заключили договор о настройке
системы 1С:Предприятие под нужды заказчика.
Дополнительные условия:
Глюки убирать сразу.
Оплата:
$100 в час. Обсуждению не подлежит.
Подписи сторон:
ЗАКАЗЧИК ИСПОЛНИТЕЛЬ
_____ [Заказчик] _____ [Исполнитель]
Оформленный таким образом документ сохранен в файле, который загружен в 1С v 8 в качестве макета (при его создании указывается, что тип макета – Active document).
Далее в соответствующем обработчике события (например, в обработчике нажатия на кнопку Создать договор) размещается следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Договор = ПолучитьМакет("Договор"); // Получить объект из макета. MSWord = Договор.Получить(); Попытка Документ = MSWord.Application.Documents(1); Документ.Activate(); //Определим имена Заказчик = "Петр Иванович КакВасТам"; Исполнитель = "helpf.pro - Помощник по 1С" // Получить объект, который будем использовать для поиска и замены. Замена = Документ.Content.Find; // Заменить заранее определенные ключевые конструкции на требуемый текст. Замена.Execute("[Заказчик]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик); Замена.Execute("[Исполнитель]", Ложь, Истина, Ложь, , , Истина, , Ложь, Исполнитель); // Далее аналогично для остальных ключевых конструкций. // ... // Делаем видимым приложение и активизируем его. MSWord.Application.Visible = Истина; MSWord.Activate(); Исключение // Если произойдет ошибка, выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки; |
1 2 3 4 5 6 7 8 9 10 11 |
Word = создатьОбъект("Word.Application"); wdDoc = Word.Documents; wdDoc.Open(ИмяФайлаШаблона,0,1); //открываем только на чтение // Делаем видимым приложение Word.Visible = 1; wdFindContinue = 1; wdReplaceAll = 2; True = 1; False = 0; Word.S_election.Find.Execute("[Заказчик]", True, True, False, False, False, True, wdFindContinue,False,"Петр Иванович КакВасТам", wdReplaceAll); Word.S_election.Find.Execute("[Исполнитель]", True, True, False, False, False, True, wdFindContinue,False,"helpf.pro - Помощник по 1C", wdReplaceAll); |