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

Печать из 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=Истина; КонецПроцедуры
    • #2
    • 16.02.2017 23:00
    0
    Здравствуйте! У меня в коде ошибок нет и ворд открывается, но только параметры не заполняются. Word 2013, 1С 8.3
    • #3
    • 17.02.2017 09:30
    0
    оказывается все вставляется, только в ворде надо вручную выделить поле с параметром, и нажать правой кнопкой мыши и "Обновить поле!" нажать, только после этих действий показывается заполненное поле.
    Как сделать, чтобы в ворде автоматически пользователю показывалось заполненное поле?
    • #4
    • 09.10.2020 10:29
    0
    здравствуйте!

    "Все конфигурации"... для 1с7 тоже? нужно именно в ней
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться