Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Печать из 1С с использованием Word документа, через параметры Word.

    • #1
    • 22.04.2016 09:12
    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=Истина;
    КонецПроцедуры
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться