Формирование и заполнение документов Microsoft Word ЛЮБОГО шаблона на основании документов и справочников системы. Любые документы и справочники 1С. Заполнение по реквизитам шапки и табличной части.
-
Основное
-
Совместимость
-
Прочее
Артикул | 358 |
Обновлено | 21.12.2022 |
Исходный код | Открыт |
Изменение конфигурации | Не требуется |
Покупок | 55 |
- BAS ERP (UA)
- BAS Комплексное управление предприятием 2 (UA)
- BAS Управление торговлей 3 (UA)
- Бухгалтерия предприятия 3.0
- Зарплата и управление персоналом 3.1
- Комплексная автоматизация 2.4 (BY)
- Комплексная автоматизация 2.4 (KZ)
- Комплексная автоматизация 2.4 и 2.5
- Управление нашей фирмой 1.6
- Управление нашей фирмой 3.0
- Управление предприятием ERP 2.4 и 2.5
- Управление торговлей 11.4 и 11.5
- Управление торговлей 3 (BY)
- Управление торговлей 3 (KZ)
Очень полезная внешняя обработка для всех типовых конфигураций 1С:Предприятие 8.3, позволяет формировать файл Word по выбранному шаблону из справочников и документов системы. С ее помощью вы можете распечатывать из 1С различные спецификации, трудовые договоры и договоры с контрагентами, гарантийные талоны и прочее прочее. Имея под рукой Word нужной структуры и чуть доработав его, вы получите возможность формировать его прямо из 1с с заполнением всех нужных параметров.
Принцип работы обработки следующий:
- выбираем Word нужной структуры,
- в тех местах файла, где необходимо вставить информацию из 1С, делаем закладки (bookmarks),
- после подготовки шаблона добавляем его в 1С (справочник Файлы),
- настраиваем заполнение шаблона печати в 1С,
- печатаем нужные документы/справочники, выбрав созданный шаблон.
Подготовка шаблона Word
Для демонстрации работы обработки настроим печать спецификации к договору из документа Заказ клиента. Допустим, у нас есть такой Word:
Из него будем формировать полноценную спецификацию. Необходимо из этого файла сделать универсальный макет, который бы каждый раз брал данные для заполнения из исходного заказа. Для этого выделяем нужные блоки в документе и для них делаем закладки:
Каждой закладке даем имя.
Имена закладок должны быть уникальными и не повторяться. В имени закладки нельзя использовать пробелы.
При печати также будем заполнять таблицу товаров. Чтобы она сформировалась красиво, оставим шапку и одну пустую строку:
Сохраняем Word, закрываем.
Настройка заполнения шаблона
Теперь в программе открываем журнал заказов клиента, заходим в меню печати и жмем кнопку для настройки печати по шаблону Word:
Настройка шаблонов доступна только пользователям с полными правами.
Окно настроек выглядит следующим образом:
В верхней части расположена таблица сохраненных шаблонов печати (которые относятся именно к заказу клиента). Добавляем новую строку таблицы, создаем новый шаблон. В строке указываем наименование шаблона (по которому впоследствии будет заполняться наименование файла). В этом наименовании можно использовать не только произвольные символы, но и заменяемые параметры (в квадратных скобках). Далее выбираем собственно файл Word (предварительно его надо добавить в справочник Файлы).
Если нужно сразу сохранить файл в присоединенные файлы заказа клиента, устанавливаем галку. В результате получится подобная картина:
При выборе файла автоматически заполняется расположенная ниже таблица закладок. Наша следующая задача — настроить источники значений для этих закладок.
Можно использовать как реквизиты исходного объекта печати (в данном случае заказа клиента), так и реквизиты реквизитов.
Для более быстрого заполнения поддерживается ввод названий с клавиатуры.
В случае работы с датой можно выбрать формат вывода.
В отдельной колонке сразу можно увидеть значение, которое будет подставлено в закладку макета Word.
Полный перечень доступных реквизитов выглядит внушительно:
Для объектов можно использовать не только значения собственных, но и дополнительных (созданных пользователями вручную) реквизитов. Для организаций и контрагентов можно использовать адреса, почту, телефоны и банковские реквизиты. Для физических лиц можно использовать паспортные данные.
В отдельной колонке таблицы закладок можно задавать падеж (для правильного склонения полученного значения), а также необходимость склонения ФИО.
На выходе получается такая таблица:
В шаблоне присутствует таблица товаров — для настройки ее заполнения переходим на вкладку Таблицы.
Выбираем из какой табличной части брать данные:
После этого через запятую перечисляем названия реквизитов табличной части, значениями которых необходимо заполнить таблицу нашего шаблона. Их количество должно совпадать с количеством колонок шаблона. Для справки в последней колонке приведены все возможные значения.
Для некоторых колонок можно просто прописать постоянное значение (на скрине выше это ШТ).
На этом настройка шаблона завершена, не забываем сохранить настройки.
Настройка шаблонов — задача одноразовая, один раз настроили и потом печатаете любые заказы сколько угодно раз.
Если нужно сохранить еще один шаблон, то проделываем повторно такую же работу.
Для редактирования шаблона выделяем его в верхней таблице (при этом таблица закладок заполняется автоматически из сохраненных настроек), вносим правки и сохраняем.
Для удаления шаблона выделяем его в списке и нажимаем Del, затем сохраняем настройки.
Для печати вызываем команду По шаблону Word (печать), в результате на экране появляется форма прикрепленного файла (т.к. мы включили сохранение файла).
Обратите внимание, что в названии файла заменяемые параметры исчезли — вместо них подставились значения документа.
Итоговый файл Word выглядит так (название файла тоже заполнилось согласно настройке):
Если для объекта создать несколько шаблонов печати, при нажатии на кнопку печати будет появляться окно с выбором нужной печатной формы.
Документы можно печатать как по отдельности, так и списком.
Чтобы оставить комментарий, зарегистрируйтесь и авторизуйтесь на сайте.
Содержание:
1. Чек-лист разработки для создания внешней печатной формы
2. Пример разработки в 1С 8.3 Зарплата и управление персоналом
Довольно часто пользователи 1С просят разработать печатную формы в формате файлов MS Word. Это обусловлено широкими возможностями форматирования этого типа документа либо удобством его дальнейшего использования и хранения. В этой статье я хочу описать надежный и простой алгоритм создания внешних печатных форм, который я использую для решения поставленных задач. Дополнительным преимуществом этого алгоритма является то, что не требуется вносить изменения в основную конфигурацию. Т.е. используется для конфигураций, находящихся на поддержке без возможности изменения.
Весь принцип реализации строиться на использовании расширения. Причем, добавлять в расширение объекты основной конфигурации практически не нужно. Это очень удобно для дальнейших обновлений конфигураций с расширениями. Возникает вопрос: «А при чем здесь внешняя печатная форма, ведь это расширение?». Дело в том, что расширение легко устанавливается в программу в пользовательском режиме. А если еще ее объекты обособленны от объектов основной конфигурации, то, я думаю, можно называть ее внешней.
Пожалуй, единственным ограничением является наличие в конфигурации Библиотеки стандартных подсистем (далее – БСП). Данный метод «активно» использует механизмы этой библиотеки, поэтому БСП должно быть интегрировано в конфигурацию информационной базы (далее – ИБ). Но здесь особо беспокоиться не нужно, т.к. БСП сейчас присутствует практически во всех типовых конфигурациях.
Перед тем как продемонстрировать пример разработки, предлагаю ознакомиться с чек-листом и представить общую последовательность действий.
1. Чек-лист разработки для создания внешней печатной формы
1.Создать расширение в конфигурации ИБ
2.В расширении добавить новую обработку (далее Обработка)
3.Обработку включить в подсистему ПодключаемыеОтчетыИОбработки
4.Создать шаблон (документ в формате MS Word) с необходимым содержанием и установить параметры
5.В обработку добавить макет и загрузить в него файл шаблона, созданного в пункте 4
6.В обработку добавить форму и в модуле формы создать функцию:
· ВыполнитьКомандуПечати – экспортная, пользовательская
7.В модуле менеджера обработки создать 3 процедуры и 4 функции:
· ПриОпределенииНастроек — экспортная, предопределенная БСП
· ДобавитьКомандыПечати — экспортная, предопределенная БСП
· Печать — экспортная, предопределенная БСП
· ПолучитьДанныеПечати — экспортная, предопределенная БСП
· ПолучитьДанныеОбъекта – пользовательская
· ОбластиМакетаОфисногоДокумента – пользовательская
· НапечататьДокумент– пользовательская
2. Пример разработки в 1С 8.3 Зарплата и управление персоналом
Давайте рассмотрим этот процесс на примере создания печатной формы дополнительного соглашения к трудовому договору в формате файла MS Word. В качестве информационной базы я буду использовать конфигурацию 1C 8.3 Зарплата и управление персоналом версии 3.1.14.183, установленную на платформе 1С:Предприятие 8.3 (8.3.17.1496). В данной конфигурации используется БСП версии 3.1.2.469.
1.Создаем расширение в конфигурации ИБ.
Запускаем 1С:Предприятие в режиме конфигуратора. Открываем список расширений с помощью команды «Расширения конфигурации» пункта меню «Конфигурация» и добавляем новое расширение. После добавления расширения в список, необходимо будет снять флажок «Безопасный режим» как это показано на Рис.1. Если безопасный режим оставить включенным, то при печати нашей формы программа будет «ругаться».
Рис. 1 Расширение конфигурации в 1С 8.3 Зарплата и управление персоналом
2.Добавляем в расширение новую обработку.
Делаем двойной клик по строке списка с нашим расширением и открываем конфигурацию расширения. В дереве конфигурации находим «Обработки» … выделяем … правая клавиша мышки … Добавить. Я назвал обработку «Расш1_ПечатьWord».
3. Включаем обработку в подсистему ПодключаемыеОтчетыИОбработки.
Для этого необходимо добавить в расширение подсистему ПодключаемыеОтчетыИОбработки из основной конфигурации. Переходим в окно основной конфигурации, находим подсистему ПодключаемыеОтчетыИОбработки в дереве, выделяем и через контекстное меню жмем команду «Добавить в расширение» (см. Рис.2)
Рис. 2 Добавление в расширение в 1С 8.3 Зарплата и управление персоналом
Возвращаемся в окно конфигурации расширения, находим добавленную нами подсистему и уже здесь в ее состав добавляем нашу обработку.
4.Создаем шаблон-документ Word с необходимым содержанием и параметрами.
На этом этапе берем шаблон доп. соглашения – документ в формате MS Word c расширением .docx, устанавливаем разделители областей вывода, а в местах, где необходимо подставить значения из базы 1С устанавливаем маркеры параметров.
Разделитель области предназначен для того, чтобы «именовать» части документа-шаблона для дальнейшего вывода средствами встроенного языка 1С. Разделители представляют собой пару — открывающий тэг {v8 Область.<Имя области>} в самом начале области документа и закрывающий тэг {/v8 Область.<Имя области>} в самом конце области документа.
В этом примере я не буду рассматривать ситуацию с выводом нескольких областей. В большинстве случаев это и не требуется. Например, для вывода не сложной формы дополнительного соглашения к трудовому договору достаточно весь документ поместить в одну область. Так ее и назовем «ВесьДокумент».
Маркеры параметров выполняют такую же роль, как и параметры стандартных печатных макетов, и имеют следующий формат {v8 <Имя параметра>}
Рис. 3 Документ в формате MS Word
5. Добавляем в обработку макет и загружаем в него файл шаблона.
Добавляем в обработку макет. Тип макета – двоичные данные. Название должно начинаться с префикса ПФ_DOC_ Для этого примера я назвал его «ПФ_DOC_ДопСоглашение».
Далее кликаем по макету печатной формы и открывается форма с кнопкой «Загрузить из файла». Загружаем наш шаблон .docx, созданный ранее(пункт 4).
6. В обработку добавляем форму.
Теперь в нашей обработке «Расш1_ПечатьWord» создаем форму. Форма должна быть основной, поэтому при создании формы важно, чтобы флажок «Назначить форму основной» был установлен.
В модуль формы копируем функцию с Рис.4
Рис. 4 Функция модуля формы в 1С 8.3 Зарплата и управление персоналом
7. В модуле менеджера обработки создадим необходимые процедуры и функции.
На данном этапе все просто. Копируем в модуль менеджера обработки тексты процедур и функций, представленные на листингах ниже. Необходимо лишь заменить отдельные участки (я их подчеркнул красными линиями) в соответствии с конкретной задачей.
7.1 ПриОпределенииНастроек
Данная процедура является предопределенной БСП, поэтому название нужно сохранить. Изменить можно размещение (подчеркнуто красным). В моем примере команда печати должна располагаться в справочнике сотрудники.
Рис. 5 Команда печати в 1С 8.3 Зарплата и управление персоналом
7.2 ДобавитьКомандыПечати
Данная процедура является предопределенной БСП поэтому название нужно сохранить. Здесь мы описывает команду, которая будет запускать печать нашей формы. Свойство МенеджерПечати определяет нахождение модуля менеджера где располагается процедура Печать. Свойство Обработчик определяет нахождение и название клиентского обработчика команды. В нашем случае он располагается на форме обработки.
Рис. 6 Добавление команды печати в 1С 8.3 Зарплата и управление персоналом
7.3 Печать
Данная процедура является предопределенной БСП поэтому название нужно сохранить. В переменную ИдентификаторКоманды и ИмяМенеджераПечати устанавливаем имя идентификатора и менеджера печати из процедуры ДобавитьКомандуПечати (пункт 7.2).
Рис. 7 Процедура печати в 1С 8.3 Зарплата и управление персоналом
7.4 ПолучитьДанныеПечати
Данная функция является предопределенной БСП поэтому название нужно сохранить. Аналогично предыдущему шагу, устанавливаем в переменную ИдентификаторКоманды имя идентификатора из процедуры ДобавитьКомандуПечати.
В параметр функции УправлениеПечатью.МакетПечатнойФормы устанавливаем полный путь к макету печатной формы, созданному в пункте 5 нашей статьи.
Рис. 8 Получение данных печати в 1С 8.3 Зарплата и управление персоналом
7.5 ПолучитьДанныеОбъекта
В этой функции необходимо создать структуру с данными, которыми будет заполняться печатная форма. Ключ структуры – имя параметра шаблона Word {v8 <Имя параметра>}, а значение – значение из базы 1С. Параметр функции СсылкаНаОбъект – ссылка на объект печати. В нашем случае это ссылка на сотрудника.
Рис. 9 Получение данных объекта в 1С 8.3 Зарплата и управление персоналом
7.6 ОбластиМакетаОфисногоДокумента
Здесь описываем области и устанавливаем типы.
Возможные типы областей:
· Общая – используется однократно.
· СтрокаТаблицы – используется для вывода множества строк;
· Список – используется для вывода множества строк;
· ВерхнийКолонтитул;
· НижнийКолонтитул;
Рис. 10 Области макета в 1С 8.3 Зарплата и управление персоналом
7.7 НапечататьДокумент
Эта функция отвечает за вывод и заполнение областей. В блоке, отмеченном красной линией, нужно описать последовательный вывод областей. Здесь меняем/устанавливаем только название области. В нашем случае «ВесьДокумент»
Рис. 11 Функция напечатать документ в 1С 8.3 Зарплата и управление персоналом
На этом все. Запускаем печать и получаем ожидаемый результат.
Рис. 12 Печать макета документа Word
В заключении хотелось бы добавить, что с помощью одной такой обработки можно реализовать множество различных команд печати документа.
В интернете можно найти множество авторских методик создания внешней печатной формы в формате документа MS Word, однако, методы на основе БСП являются наиболее надежными.
Специалист компании «Кодерлайн»
Игорь Торба
Содержание
- Назначение обработки
- Установка обработки в информационную базу
- Как создать свой шаблон договора, который будет заполняться автоматически
- Как заполнить договор в Word из 1С по собственному шаблону
- Как автоматически сохранять в справочник «Файлы» все формируемые договоры
Назначение обработки
Обработка «Создание договоров по шаблонам Word в 1С» предназначена для облегчения процесса ведения учета договоров в таких автоматизированных программах как «Управление торговлей 11» или «Бухгалтерия предприятия 3.0». Возможности обработки не ограничиваются одним лишь хранением договоров в типовом справочнике «Договоры контрагентов». Согласование договора осуществляется в разы быстрей, ведь само формирование не отнимет у Вас много времени, так как договор будет заполнен по заранее созданному шаблону. Шаблоны хранятся в справочнике «Файлы», куда после успешного формирования попадают и новые заполненные договоры в формате документа Word. Для хранения ранее созданных шаблонов необходимо организовать новую папку в справочнике «Файлы», а также в этом справочнике подготовить каталог для хранения сформированных договоров.
Подробно рассмотрим предназначения элементов рабочей области обработки. В шапке находится панель командных кнопок:
- Сформировать — активирует первый режим работы обработки, который формирует договор и сразу локально на ПК открывает готовый вариант сформированного договора. Далее средствами MS Word данный договор можно сохранить на компьютере. Данный способ не сохраняет сформированные договора в справочнике «Файлы».
- Создать договор — активирует второй режим работы обработки, который сохраняет сформированный договор в типовом справочнике «Файлы» и открывает карточку сохраненного файла для дальнейших действий (просмотр, редактирование).
- Параметры — открывает таблицу доступных параметров, где отображено корректно написание переменных, а также их пояснение.
- Сохранить образец шаблона — сохраняет используемый шаблон в справочнике «Файлы» как образец.
Далее расположен набор реквизитов, которые необходимо заполнить перед формированием договора. На основании заполненных реквизитов подставляются значения в табличную часть.
- Организация — указывается организация, которая заключает договор с контрагентом.
- Контрагент — указывается контрагент, который заключает договор с организацией.
- Шаблон — выбирается необходимый шаблон, по которому будет осуществляться формирование договора.
- Счет — автоматически подставляемый реквизит, который заполняется на основании данных указанной организации.
- Договор — указывается договор между организацией и контрагентом, если такой имеется, в противном случае реквизит остается незаполненным.
- Папка — указывается заранее созданный каталог в справочнике «Файлы», в который будут сохранятся сформированные договоры.
Установка обработки в информационную базу
Процесс установки обработки «Создание договоров по шаблонам Word в 1С УТ 11.4 и БП 3.0» очень прост и сейчас мы в этом убедимся. Рассматривать пример установки будем на конфигурации «Управление торговлей 11.4». Открываем конфигурацию в режиме 1С:Предприятие и переходим в раздел «НСИ и администрирование», где необходимо открыть подраздел «Печатные формы, отчеты и обработки».
Перейдя в данный подраздел, необходимо открыть функционал «Дополнительные отчеты и обработки», где будет осуществлена установка обработки.
В форме списка раздела «Дополнительные отчеты и обработки» нажмем кнопку «Добавить из файла», чтобы добавить файл обработки из локального каталога. Нажав на данную кнопку, автоматически переходим в форму «Дополнительная обработка (создание)», где перед нами отобразится предупреждение безопасности, нажмем кнопку «Продолжить».
После закрытия окна «Предупреждения безопасности» автоматически открывается проводник, в котором необходимо указать файл нашей обработки «Создание договоров по шаблонам Word в 1С УТ 11.4 и БП 3.0». После того, как обработка добавлена можно осуществить ряд настроек, например, указать видимость, где обработка будет доступна и использоваться. По умолчанию видимость устанавливается автоматически, но эту настройку можно скорректировать вручную. Далее остается нажать только кнопку «Записать и закрыть», после чего установку обработки можно считать завершенной.
Как создать свой шаблон договора, который будет заполняться автоматически
Обработку можно открыть открыв любой элемент справочника Договоры и в нем нажать в меню Печать > Создание договора по шаблону Word
В самом начале надо создать шаблон вашего договора в который будут подставлять параметры из справочника Договоры. Для создания нового шаблона необходимо знать, каким образом обработка подставляет нужную информацию при формировании документа. Ответ прост, все реквизиты типового договора представляются в виде <переменных>, которые в свою очередь используются в тексте шаблона. Так, например, чтобы указать полное наименование организации необходимо использовать переменную <ОрганизацияПН> и так далее. Список доступных переменных отображается в табличной части обработки в колонке «Найти». В этой же табличной части содержится колонка значений, которые будут подставлены в ту или иную переменную, а также пояснения каждой из переменных.
Создайте новый документ MS Word, в котором заполните необходимый текст с использованием выше перечисленных переменных. В результате у Вас должен получится шаблон как на рисунке ниже. Данный шаблон нужно будет загрузить в справочник «Файлы» в соответствующую папку, чтобы после, его использовать при формировании договора.
Таких шаблонов может быть сколько угодно. Сохраните их в справочник Файлы и при формировании договора в Word выбирайте нужный шаблон.
После того как нами был создан собственный шаблон и добавлен в файлы конфигурации, его можно использовать для формирования договора. Из справочника Контрагенты откроем обработку и приступим к заполнению. В шапке укажем основные реквизиты, где выберем ранее созданный шаблон и укажем папку справочника Файлы, куда необходимо складывать сформированные договоры. Замечу, что указанные реквизиты будут автоматически подставляться в табличную часть обработки.
Если какой-то из реквизитов не проставился или Вам необходимо добавить другой реквизит, который используется в шаблоне, это можно сделать в табличной части. Чтобы изменить подставляемое значение, нужно внести корректировки в столбец Заменить напротив необходимой переменной. А для добавления дополнительного параметра нужно воспользоваться кнопкой Добавить и указать переменную, которая должна быть добавлена.
После проделанных манипуляций все что остается, это сформировать договор по собственному шаблону, который будет заполнен необходимыми значениями, указанных переменных. Нажмем на кнопку Сформировать, дождемся выполнения и проверим корректность подставленных данных.
Как результат, получаем готовый полностью заполненный договор с контрагентом, на который было затрачено не более минуты.
При этом сложность шаблона абсолютно не важна. Обработка подставит параметры везде в файле, если их найдет.
Как автоматически сохранять в справочник «Файлы» все формируемые договоры
Обработка позволяет сохранять помимо самих шаблонов также уже сформированные договоры, которые в дальнейшем всегда можно будет открыть для просмотра или редактирования. Чтобы договора сохранялись в конфигурации необходимо воспользоваться вторым режимом формирования договора. Для этого сначала в реквизите «Папка» нужно указать заранее созданную папку для хранения договоров в справочнике Файлы. А после осуществления всех настроек нужно нажать на кнопку Создать договор.
Обработка сформирует заполненный с помощью указанных переменных договор и сохранит его в указанный ранее каталог справочника Файлы. При этом после формирования договора автоматически откроется карточка файла конфигурации, где будут доступны действия: просмотра, редактирования и сохранение файла на локальный каталог. В принципе Вам будут доступны все предопределенные возможности конфигурации, которые предполагают взаимодействия с файлами.
0
14.01.201616:1414.01.2016 16:14:14
Доброго времени суток!
Для большинства организаций стандартная печатная форма какого-либо договора в программах 1С не подходит. Поэтому фирма 1С предоставила возможность добавлять дополнительные печатные формы для документов и других объектов. В этой статье я хочу рассказать, как создать и подключить внешнюю печатную форму договора, которая будет открываться в Microsoft Word.
Подключение дополнительных внешних печатных форм
Запускаем 1С:Предприятие. Открываем справочник «Дополнительные внешние печатные формы» через меню «Сервис» — «Дополнительные отчеты и обработки».
Нажмем кнопку «Добавить», затем зарегистрируем новую печатную форму, нажав «Заменить файл внешней обработки». Автоматически заполнится принадлежность печатной формы документу «Реализация товаров и услуг». Выбираем «Договор» в колонке «Заменяемая печатная форма», чтобы стандартная печатная форма более не использовалась.
Запускаем 1С:Предприятие, открываем справочник «Контрагенты», выбираем контрагента, для которого будет печататься наш договор и по кнопке «Файлы» переходим в справочник «Хранилище дополнительной информации», загружаем в него шаблон для договора и ,обязательно, называем его «Договор», как показано на рисунке ниже, иначе программа не сможет найти макет для печатной формы.
Теперь открываем любой документ «Реализация товаров и услуг» и нажимаем кнопку «Печать» — «Договор». Откроется документ Microsoft Word с договором.
Внешнюю печатную форму «Договор» и макет к ней можно скачать по ссылкам ниже.
Макет трудового договора в формате Microsoft Word
Существует, по меньшей мере, три способа создания шаблона:
1. В документе Word создаются опорные фразы, например, «[НомерДоговора]», затем, в модуле обработки производится поиск и замена значений.
2. В документе Word создаются закладки, к которым потом можно обращаться по имени. Минус этого способа в том, что метка должна быть уникальна, т.е., если нужно вставить фамилию сотрудника в каждый абзац текста, то придется сделать несколько закладок с разными именами.
3. В документе Word добавляются служебные поля, например, «DocVariable» или «Author». Используя DocVariable можно обращаться к переменной по имени, например, «ДокументВорд.Variables.Add(ИмяПеременной, ЗначениеПеременной);», но ее не видно в шаблоне. Поле «Author» отображается в шаблоне, но обращаться к нему придется в цикле по индексу: «ДокументВорд.Fields.item(Индекс).Result.Text = Значение;».
На мой взгляд, первый способ является самым оптимальным. Шаблон документа легко редактируется, опорные фразы видны в тексте. Поэтому шаблон создаём этим способом.
Открываем программу Microsoft Office. Для примера добавляем пару строк, как показано на рисунке ниже и сохраняем шаблон.
Создание внешней печатной формы «Договор»
Запускаем 1С:Предприятие в режиме «Конфигуратор» и через меню «Файл» — «Новый» создаём внешнюю обработку. Добавляем реквизит «Ссылка на объект» и макет «Параметры_Авторегистрации» с типом «Табличный документ». Тип реквизита «Ссылка на объект» зависит от того, для каких объектов будет использоваться печатная форма, в нашем случае печатная форма будет использовать для документа «Реализация товаров и услуг», поэтому указываем тип «ДокументСсылка.РеализацияТоваровУслуг».
Разработка процедуры печати
Параметры авторегистрации
Для автоматического заполнения принадлежности печатной формы к объектам конфигурации, заполним макет «Параметры_Авторегистрации». Это будет табличный документ, содержащий одну колонку с именами объектов метаданных, к которым будет принадлежать печатная форма. В нашем случае таблица будет выглядеть следующим образом.
14.01.201616:1414.01.2016 16:14:14
В работе программиста 1С, данный функционал требуется крайне редко, хотя благодаря нему можно решать довольно сложные задачи с динамическими и не постоянными печатными формами. При реализации данной задачи, работа по созданию шаблонов Word и расстановке закладок в шаблоне Word возлагается на пользователей 1C.
В данном примере будет показано, как используя механизмы 1С и документа Word в качестве шаблона, можно создать печатную форму для вывода данных, пользователям программы 1С.
Создадим шаблон на основе документа Word для 1С. Сначала необходимо включить показ закладок для более удобной работы с документом:
Использование шаблонов Word в 1С
Использование шаблонов Word в 1С
Далее необходимо в файл шаблона для 1С, добавить текст и пару закладок. Закладка добавляется через меню «Вставка» — «Закладка». Нужно выделить текст закладки, скопировать его, открыть меню «Вставка — Закладка», вставить скопированный текст закладки и нажать «Добавить»:
Установка закладки, шаблон Word для 1С
Когда файл шаблона Word готов, создаем новую внешнею обработку в 1С, добавляем форму и в модуле формы вставляем следующий код:
&НаКлиенте Процедура ПриОткрытии(Отказ) ЗаполнитьШаблонВорд(); КонецПроцедуры &НаКлиенте Функция ЗаполнитьШаблонВорд() //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Неопределено; КонецПопытки; //Путь к шаблону ОбъектВорд.Documents.Add("C:UsersКонстантинDesktopШаблон.docx"); ШаблонВорд = ОбъектВорд.ActiveDocument; //Получаем все закладки из шаблона Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл Сообщить(ЗакладкаВорд.Name); КонецЦикла; //Заменяем закладку1 на текст ШаблонВорд.Bookmarks("Закладка1").Select(); ШаблонВорд.Application.Selection.TypeText("Текст для закладки №1."); //Заменяем закладку2 на текст ШаблонВорд.Bookmarks("Закладка2").Select(); ШаблонВорд.Application.Selection.TypeText("Текст для закладки №2."); //Заменяем закладку3 на текущую дату ШаблонВорд.Bookmarks("Закладка3").Select(); ШаблонВорд.Application.Selection.TypeText(ТекущаяДата()); ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа //ОбъектВорд.Application.Quit(); КонецФункции
В результат запуска внешней обработки 1С по формированию печатной формы на основе шаблона в виде файла Word, мы получим следующий результат:
Результат использования шаблонов Word в 1С
Информацию по методам COM объекта Word, а так же дополнительные данные можно узнать из MSDN.
Скачать файл обработки 1С и шаблона Word.
Дополнение к заметке Использование шаблонов Word в 1С
Выражаю благодарность, всем тем, кто комментирует запись, благодаря вам, материал дополняется новыми данными и будет полезен более широкому кругу посетителей.
1. А как поменять размер шрифта во вставляемом тексте?
Достаточно изменить размер шрифта закладки, в шаблоне. А вот, если необходимо динамически менять размерность, тогда:
//Заменяем закладку3 на текущую дату ШаблонВорд.Bookmarks("Закладка3").Select(); ШаблонВорд.Application.Selection.Font.Bold = 1; ШаблонВорд.Application.Selection.Font.Size = 20; ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());
2. Картинки есть возможность выгружать в шаблон?
Да, конечно. Примеры для C# и VB описаны по ссылке: https://msdn.microsoft.com/ru-ru/library/ms178792.aspx, а для 1С код будет следующий:
// Вставка изображения ШаблонВорд.Bookmarks("Закладка3").Select(); ШаблонВорд.Application.Selection.InlineShapes.AddPicture("C:UsersКонстантинDesktoplogo_1c.png");
3. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина?
Может попробовать изменить путь на: «C:Шаблон.docx».
4. Подскажите пожалуйста еще почему при сохранении макета типа active document в файл word кодом:
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Макет = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка"); ИмяФайла = КаталогВременныхФайлов() + ""файл.doc"; Макет.Записать(ИмяФайла);
Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk
Предполагаю, что метод Записать(< ИмяФайла>, < ТипФайлаТаблицы>) по умолчанию, записывает файл в формате MXL. Попробуйте вторым параметром установить значение: ТипФайлаТабличногоДокумента.DOCX, более подробно описано в «Синтакс-помощнике».
5. У меня в документе есть ссылки на файлы которые расположены на сетевом диске. Как в шаблоне сделать гиперссылку на эти файлы?
Интересный вопрос, если попробовать сделать запись макроса и посмотреть результат, то в Visual Basic добавление гиперссылки будет выглядеть следующим образом:
Sub Макрос1() ' ' Макрос1 Макрос ' ' Selection.MoveLeft Unit:=wdCharacter, Count:=15, Extend:=wdExtend ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _ "C:UsersКонстантинDesktopТест.txt", SubAddress:="", ScreenTip:="", _ TextToDisplay:="ТестоваяСсылка" End Sub
Описание метода добавления в MSDN: https://msdn.microsoft.com/en-us/vba/word-vba/articles/hyperlinks-add-method-word
Соответственно код для 1С следующий:
Функция ЗаполнитьШаблонВорд() //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Неопределено; КонецПопытки; //Путь к шаблону ОбъектВорд.Documents.Add("C:Usersk.blaginDesktopШаблон.docx"); ШаблонВорд = ОбъектВорд.ActiveDocument; //Получаем все ссылки из шаблона Для каждого ЗакладкаВорд Из ШаблонВорд.Hyperlinks Цикл Сообщить(ЗакладкаВорд.Name); КонецЦикла; //Меняем адрес уже существующей ссылки ШаблонВорд.Hyperlinks("Logs.zip").Address = "C:Usersk.blaginDesktopMemory.zip"; //Заменяем закладку на ссылку ОбъектЗакладка = ШаблонВорд.Bookmarks("Закладка3"); ШаблонВорд.Hyperlinks.Add(ОбъектЗакладка.Range, "C:Usersk.blaginDesktopШаблон.docx", "", "Шаблон.docx", "C:Usersk.blaginDesktopШаблон.docx"); ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа //ОбъектВорд.Application.Quit(); КонецФункции
В этом уроке мы научимся создавать шаблоны Word с предопределенными именованными полями, которые можно в дальнейшем заполнять программно из 1С (ссылка на пример кода).
Что это означает на практике?
К примеру, у нас есть типовая форма счёта на оплату, который мы выставляем покупателям.
Так вот — мы можем один раз создать шаблон такого счёта, прописать в нём поля id, date, organization, inn, kpp… и т.д. и затем программным способом создавать готовые для отправки покупателям счета на оплату.
Сейчас мы вместе в Word 2007 создадим такой шаблон, вернее я покажу сам принцип.
1. Первым делом создаём обычной документ Word.
2. Оформляем его как обычно.
3. Затем устанавливаем курсор в место, куда будет вставляться значение программно (пусть это будет номер счёта):
4. Переходим на закладку «Вставка» и выбираем «Экспресс-блоки»-«Поле…»:
5. В открывшемся диалоге выбираем тип поля «MergeField» и пишем имя поля (по которому мы его будем находит в 1с программно) — «number»:
6. Нажимаем «Ок» и в документ вставляется поля типа «MergeField» с именем «number»:
Отлично! Это то что надо
7. Оформляем весь документ в этом же стиле (вставляя нужные поля):
И, наконец, сохраняем этот документ в виде шаблона Word (с расширением dotx):
Готово!
Полученный файл с расширением dotx используем для программного создания документов.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться: