helpf.pro
Регистрация
 0 
Распечатать

Как сформировать новый договор, документ на основании файла, шаблона Microsoft Office Word?

Для заключения договоров с контрагентами разработан типовой договор (шаблон).
При его оформлении (для реального контрагента) в определенные места документа вставляются данные о контрагенте.
Подобные фрагменты определены следующим образом: <ИмяОбласти> (на практике можно использовать другие способы, в нашем примере квадратные скобки [ ]).
Пример договора:
Договор
на оказание услуг

Я, [Заказчик], с одной стороны, именуемый в дальнейшем ЗАКАЗЧИК, и [Исполнитель],
с другой стороны, именуемый в дальнейшем ИСПОЛНИТЕЛЬ, заключили договор о настройке
системы 1С:Предприятие под нужды заказчика.

Дополнительные условия:
Глюки убирать сразу.

Оплата:
$100 в час. Обсуждению не подлежит.

Подписи сторон:

ЗАКАЗЧИК ИСПОЛНИТЕЛЬ
_____ [Заказчик] _____ [Исполнитель]



Оформленный таким образом документ сохранен в файле, который загружен в 1С v 8 в качестве макета (при его создании указывается, что тип макета – Active document).

Далее в соответствующем обработчике события (например, в обработчике нажатия на кнопку Создать договор) размещается следующий код:
Код 1C v 8.х
  Договор = ПолучитьМакет("Договор");
// Получить объект из макета.
MSWord = Договор.Получить();

Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
//Определим имена
Заказчик = "Петр Иванович КакВасТам";
Исполнитель = "helpf.pro - Помощник по 1С"

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

// Заменить заранее определенные ключевые конструкции на требуемый текст.
Замена.Execute("[Заказчик]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик);
Замена.Execute("[Исполнитель]", Ложь, Истина, Ложь, , , Истина, , Ложь, Исполнитель);
// Далее аналогично для остальных ключевых конструкций.
// ...
// Делаем видимым приложение и активизируем его.
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;


Код 1C v 7.x
 
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);
Разместил:   Версии: | 7.x | 8.x |  Дата:   Прочитано: 35661
 0 
Распечатать
Возможно, вас также заинтересует
Блокировка программного использования формы 0
Столкнулся с проблемой, что перестал работать следующий код (возвращает неопределено): ФормаОбработкиЗаявки = ПолучитьФорму(" Обработка.СозданиеДоговоровУП.Форма.Форма" ); Все оказалось просто. Что бы данная функция возвращала " неопределено" , н
Ввод данных по командировкам в программе ЗУП 0
Ввод сведений о командировках в программе 1С: Зарплата и управление персоналом 8 (ред.30) осуществляется в Разделе Кадры - Все кадровые документы - Создать - Командировка Откроется документ: Ввод сведений о командировках в программ
Ввод договоров ГПХ в ЗУП (счет 76) 9
Часто меня спрашивают: Как правильно отразить договор ГПХ в ЗУП? Ниже небольшая, последовательная инструкция: Прием на работу Сведения о физическом лице, выполняющем работы по договору подряда, должны быть внесены в справочник Сотрудники организ
Ввод дополнительного ежегодного отпуска 2
Вид расчета, используемый для начисления оплаты дополнительного ежегодного отпуска , описывается в плане видов расчета Основные начисления организаций . Новый вид расчета удобнее создать копированием предопределенного вида расчета Оплата отпуска п
ВКС - Высококвалифицированные специалисты - какие настройки нужно сделать ЗУП? 0
В этой статье мы вкратце расскажем - какие настройки нужно сделать ЗУП для временно пребывающих высококвалифицированных иностранных специалистов. Гражданство Откройте сотрудника и перейдите в настройки данных о Гражданстве Если сотрудник ВКС то
Посмотреть все результаты поиска похожих
Комментарии
Marmari
14.06.2012 10:20Комментарий: 6
Marmari
E_Migachev! Большое спасибо, что откликнулись! Но я не совсем поняла, как использование закладок может мне помочь в решении моей проблемы... Да, я могу в итоге сформировать строку неограниченной длины с нужными данными по всем сотрудникам, а потом вставить ее в закладку. Но мне же нужно, чтобы текст располагался как в шаблоне! Т.е. исходящий номер и дата всегда в левом верхнем углу, кому предназначена - в правом верхнем, текст справки в центре листа, подписи внизу. И чтобы каждая новая справка начиналась на новом листе. Может, я не совсем верно поняла, как использовать закладки???
E_Migachev
13.06.2012 00:24Комментарий: 5
E_Migachev
Marmari
09.06.2012 11:49Комментарий: 4
Marmari
Добрый день! У меня возникла следующая проблема. Есть шаблон Word (справка для сотрудника), который заполняется из 1С как в примере. Все отлично работает для одного сотрудника. Но мне необходимо формировать по этому шаблону справки для множества сотрудников сразу в одном файле.Пока у меня получается только столько же файлов, сколько сотрудников выбрано. Нашла вариант, где это реализовано через копирование содержимого документа (шаблона в моем случае), вставки разрыва страницы, вставки из буфера. Но у меня это не работает - выдает ошибку "метод объекта не обнаружен" для методов Paste() и I_nsertBreak(). Хотя в буфер копируется, т.е. метод Copy() у документа есть и он работает.
Подскажите, пожалуйста, как можно решить эту проблему.
FeliceYa
25.02.2011 18:40Комментарий: 3
FeliceYa
Код для 8.0/8.1 не работает так как должен, он подставляет значение только один раз и в первую прописанную переменную (в данном случае это [Заказчик]).
Вод рабочий код для данного примера:
Код 1C v 8.х
 	Договор = ПолучитьМакет("Договор");
// Получить объект из макета.
MSWord = Договор.Получить();

Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
//Определим имена
Заказчик = "Петр Иванович КакВасТам";
Исполнитель = "Help1C.com - Помощник по 1С";

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

// Делаем видимым приложение и активизируем его.
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;
E_Migachev
31.03.2010 16:57Комментарий: 2
E_Migachev
valley, Посмотри ниже следующие ссылки, они тебе помогут:
ссылка 1
ссылка 2
valley
30.03.2010 23:17Комментарий: 1
valley
Подскажите как будет выглядеть тот же код для OpenOffice Writer и 1С v 8.1
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.