Modber Сообщество
профессионалов по 1С

Печатные формы и печать в целом с макетом Word-документа



Платформы: 1С:Предприятие 8.3, 1С:Предприятие 8.2, 1С:Предприятие 8.1
Конфигурации: Все конфигурации
2015-02-24
11483 
АндрейОборин
4  

Много сталкаивался с необходимостью печатать тот или иной документ с использованием и заполнением 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(имяВременногоФайла);
   
   СтруктураДоверенности = ПолучитьДанныеДоверенности(СсылкаНаОбъект.Менеджер);
   НомерДатаДоверенности = "№ " + СтруктураДоверенности.Номер + " от " + СтруктураДоверенности.Дата;
   
   ТекДок.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=Истина;
КонецПроцедуры


Заключение: Вот таким образом получаем наш макет Word, с заполненными параметрами. Когда я этому научился ) очень помогло, а то до этого возился, возился… все ошибки лезли при "замене текста".




Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

Комментарии (0)