0
Конфигурации: Все конфигурации
Кому пригодится, буду рад ))
Много сталкаивался с необходимостью печатать тот или иной документ с использованием и заполнением Word. Но использую наиболее распространенный механизм "замены" текста, с которым многие знакомы, сталкивался с различными ошибками, из-за которых ничего не получалось (хотя код написан 100% верно).
Раскажу о методе заполнения нужных нам Параметров в документе с использованием Параметров Word.
Я думаю программисты пойму, поэтому не буду размусоливать. Представьте Word документ —
1. Создаем документ Word, заполняем его так, как нам надо, в моем случае был "Агентский договор".
2. Определяем нужные нам для заполнения "места". например у меня — это Номер(NomerDogovora), Дата(DataDok), Организация(Organization), Менеджер(Menager), Контрагент(Principal)
3.Собственно сама замена (на примере Номера Документа):
3.1 В документе Выбираем участок для параметра, например: "АГЕНТСКИЙ ДОГОВОР №0101010101", в качестве участка нам нужно выделить сам номер, или удалить его и спозиционироваться на его месте.
3.2 В меню Word, переходим на "Вставка", далее "Экспресс-блоки", далее "Поле"
3.3 В открывшемся диалоговом окне, выбираем тип "DocVariable"
3.4 Назначаем имя, в моем случае "NomerDogovora"
3.5 Жмем "Ок", когда окно закроется, вы скорей всего не увидите изменений, так как скрыт "Word kod", нажмите Alt+F9, что бы открыть код.
4. Таким образом создаете все нужные Вам параметры.
5. После того как все параметры готовы, сохраняем и закрываем докмент Word.
ПЕРЕХОДИМ К 1С
1. В нашем нужном объекте конфигурации (ВН форма, ВН отчет и т.д.) добавляем макет, устанавливаем тип "Двоичные данные", и выбираем из файла наш созданный документ Word.
2. Программный код выглядит вот так:
Функция ПолучитьМакетСервер()
Возврат ПолучитьМакет("Макет1");
КонецФункции
ПРоцедура НапечататьДокумент(Объект)
Word = Новый COMОбъект("Word.Application");
Макет = ПолучитьМакетСервер();
временныйПуть = КаталогВременныхФайлов();
имяВременногоФайла = временныйПуть + "gph.doc";
Макет.Записать(имяВременногоФайла);
ТекДок = Word.Documents.ADD(имяВременногоФайла);
СтруктураДоверенности = ПолучитьДанныеДоверенности(СсылкаНаОбъект.Менеджер);
НомерДатаДоверенности = "№ " + СтруктураДоверенности.Номер + " от " + СтруктураДоверенности.Дата;
///////////// Установка значений параметров Word
ТекДок.Variables("NomerDogovora").Value=СокрЛП(Строка(СсылкаНаОбъект.Номер));
ТекДок.Variables("DateDok").Value=Строка(Формат(СсылкаНаОбъект.Дата,"ДЛФ = ДД"));
ТекДок.Variables("Organization").Value=СокрЛП(СсылкаНаОбъект.Организация.НаименованиеПолное);
ТекДок.Variables("Menager").Value=Строка(СсылкаНаОбъект.Менеджер);
ТекДок.Variables("NDateDov").Value=Строка(НомерДатаДоверенности);
ТекДок.Variables("Principal").Value=Строка(СсылкаНаОбъект.Контрагент);
ТекДок.Fields.Update();
Word.ActiveWindow.View.ShowFieldCodes = False;
Word.Visible=Истина;
КонецПроцедуры