Документы и Печать · 13 мин
Как сделать шаблон в Word для 1С
Как создать шаблон Word для 1С: макет DOCX с параметрами, областями и таблицами, подключение внешней печатной формы, типичные ошибки и проверка результата.
Печатные формы в 1С можно строить не только на табличных документах, но и на основе макетов Microsoft Word (DOCX). Это удобно, когда документ должен выглядеть «по-офисному»: договор, акт, письмо, коммерческое предложение — с фирменным бланком, аккуратной вёрсткой и полями, которые бухгалтер или менеджер заполняет автоматически из базы.
Суть подхода проста: вы создаёте обычный документ Word, в нужные места вставляете специальные метки (параметры и области), а 1С при печати подставляет вместо них данные из справочников и документов. Для этого потребуется либо доработка конфигурации, либо подключение внешней печатной формы — второй вариант не требует изменения типовой конфигурации и доступен даже без прав разработчика в базе клиента.
Ниже разобран весь цикл: от подготовки файла DOCX до проверки готовой печатной формы, с типичными ошибками и ограничениями, о которых часто забывают.
Когда шаблон Word оправдан, а когда лучше табличный макет
В 1С существует несколько способов построить печатную форму: табличный документ (MXL), макет Word (DOCX), макет HTML и офисный документ через механизм печати БСП. Выбор зависит от задачи, а не от привычки.
Шаблон Word выбирайте, если документ текстовый и «повествовательный»: договор с длинными пунктами, письмо контрагенту, справка, протокол. Word удобен, когда юрист или руководитель хочет самостоятельно править текст документа, не трогая код 1С — он открывает DOCX, меняет формулировки, а метки-параметры остаются на месте.
Табличный макет (MXL) лучше подходит для форм с жёсткой структурой: счета, накладные, акты с таблицами товаров, первичные документы с регламентированным видом. Там проще управлять рамками, колонтками и итогами прямо в конфигураторе.
Сравнение вариантов макетов
Подходит для счетов, накладных, ТОРГ-12. Точная разметка таблиц, но сложно править длинные тексты.
Подходит для договоров, писем, справок. Текст может править пользователь без конфигуратора, но сложнее управлять повторяющимися строками таблиц.
Подходит для писем и форм, которые отправляются по почте или публикуются. Требует навыков вёрстки.
Подготовка файла DOCX: структура и требования
Создайте в Word новый документ и сверстайте документ так, как он должен выглядеть на бумаге: шапка с реквизитами, основной текст, таблица позиций, подписи. На этом этапе важно продумать, какие данные будут подставляться из 1С — номер и дата документа, наименование контрагента, ИНН, адрес, суммы, ФИО сотрудника.
Рекомендации по подготовке файла:
- Используйте формат именно DOCX (не DOC и не RTF) — механизмы 1С работают с OpenXML-структурой.
- Не применяйте сложные элементы: вложенные таблицы в несколько уровней, объединённые ячейки с нестандартной геометрией, текстовые поля и автофигуры могут некорректно обрабатываться при подстановке.
- Задайте стили и шрифты в самом шаблоне — 1С подставляет только текст, форматирование берётся из DOCX.
- На места подстановки пока впишите понятные заглушки, например [НомерДокумента] или [Контрагент] — позже вы замените их закладками или оставите как текстовые метки, в зависимости от способа заполнения.
Сохраните файл с понятным именем, например Договор_Шаблон.docx. Файл понадобится на следующих этапах — он будет храниться либо внутри внешней обработки, либо в макете конфигурации.
Разметка шаблона: параметры, области и таблицы
Чтобы 1С понимала, куда подставлять данные, шаблон размечается. Существует два основных способа разметки: закладки Word и текстовые метки в фигурных скобках. Способ зависит от того, каким механизмом будет заполняться документ.
Закладки Word
Выделите место подстановки (или поставьте курсор), перейдите на вкладку «Вставка» → «Закладка», введите имя без пробелов и кириллицы, например NomerDoc или Kontragent, и нажмите «Добавить». Имена закладок должны быть уникальны внутри документа. При программном заполнении через COM-объект код 1С обращается к закладке по имени и вставляет текст в её позицию.
Текстовые метки и области
При использовании механизма макетов офисных документов в библиотеке стандартных подсистем (БСП) применяется другой подход: параметры пишутся прямо в тексте в фигурных скобках, например {НомерДокумента}, а повторяющиеся части (строки таблицы товаров) оформляются как области. Область — это фрагмент документа, который выводится многократно: например, строка таблицы с колонками {Товар}, {Количество}, {Цена}, {Сумма}.
Для табличной части создайте в Word таблицу с одной строкой-образцом, содержащей метки колонок. При формировании печатной формы 1С будет клонировать эту строку для каждой позиции документа. Не добавляйте в таблицу лишние пустые строки — они попадут в итоговый документ.
Подключение шаблона через внешнюю печатную форму
Если конфигурация построена на БСП (УТ, ERP, Бухгалтерия, ЗУП и большинство типовых), самый безопасный путь — внешняя печатная форма. Она подключается через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки», не меняет конфигурацию и не снимает её с поддержки.
- 1В конфигураторе создайте новую внешнюю обработку (Файл → Новый → Внешняя обработка).
- 2Добавьте в обработку макет типа «Двоичные данные» (или «ActiveDocument») и загрузите в него подготовленный файл DOCX.
- 3В модуле объекта обработки опишите экспортную функцию СведенияОВнешнейОбработке() — она сообщает 1С вид обработки («ПечатнаяФорма»), объекты назначения (например, «Документ.РеализацияТоваровУслуг») и команду печати.
- 4Реализуйте процедуру Печать(), в которой получите данные документа запросом, откройте макет и подставьте параметры в области и закладки.
- 5Сохраните обработку и подключите её в режиме 1С:Предприятие через «Дополнительные отчеты и обработки».
- 6Откройте документ, нажмите «Печать» и выберите новую форму — проверьте результат.
Ключевой фрагмент — функция сведений. Минимальный каркас выглядит так:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Идентификатор = "ДоговорWord";
НоваяКоманда.Представление = НСтр("ru = 'Договор (Word)'");
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
В процедуре печати данные документа получают запросом, затем макет извлекается методом ПолучитьМакет("МакетДоговор") и заполняется. Для макетов DOCX в БСП предусмотрены механизмы работы с областями; альтернатива — открыть файл через COM-объект Word.Application и заполнить закладки напрямую.
Заполнение шаблона программно: два подхода
Первый подход — через COM-объект Word. Код создаёт экземпляр приложения, открывает сохранённый во временный файл макет, находит закладки по именам и записывает в них значения, после чего показывает документ пользователю. Плюс — полный контроль и возможность работать с закладками любой сложности. Минус — требуется установленный Word на машине, где выполняется код (на сервере 1С при серверном вызове это часто проблема), и нужно аккуратно освобождать COM-объекты, чтобы не плодить зависшие процессы WINWORD.EXE.
Второй подход — механизм макетов офисных документов: 1С разбирает DOCX как пакет OpenXML, подставляет параметры в метки и области без запуска Word. Это работает на сервере и в веб-клиенте, быстрее и безопаснее. Ограничение — разметка должна соответствовать ожиданиям механизма, а сложные элементы форматирования иногда обрабатываются непредсказуемо.
Как выбрать способ заполнения
Проверка результата и типичные ошибки
После подключения обработки сформируйте печатную форму на реальном документе с разными данными: короткое и длинное наименование контрагента, одна строка в табличной части и двадцать строк, пустые необязательные реквизиты. Именно граничные случаи выявляют проблемы вёрстки.
Как проверить результат
Все метки заменены реальными данными, в документе нет остатков вида {Параметр}
В тексте остались фигурные скобки или пустые места — имя параметра в макете не совпадает с именем в коде
Строки выводятся по числу позиций, итоги и нумерация корректны
Строки дублируются, съезжают колонки или выводится лишняя пустая строка-образец
Шрифты, отступы и подписи соответствуют шаблону
Подставленный текст отличается стилем от остального документа — метка вставлена внутрь текста с другим форматированием
Документ открывается в Word без предупреждений о повреждении
Word сообщает о нечитаемом содержимом — файл был испорчен при сохранении в макет или при программной обработке
Сопровождение шаблона: изменения и перенос
Со временем текст договора меняется: юристы правят формулировки, добавляются реквизиты. Если макет хранится внутри внешней обработки, порядок изменения такой: извлеките DOCX из макета (в конфигураторе — открыть макет и сохранить файл), внесите правки в Word, не трогая метки и закладки, загрузите файл обратно и обновите обработку в справочнике дополнительных отчётов и обработок. Пользователям ничего переустанавливать не нужно.
При переносе формы в другую базу достаточно перенести файл обработки (.epf) — макет путешествует внутри него. Если же шаблон встроен в конфигурацию как макет, изменения выполняются только через конфигуратор с последующим обновлением, что для типовых конфигураций на поддержке нежелательно.
Удобно завести для каждой печатной формы тестовый документ с «эталонными» данными: длинное наименование контрагента, максимальное число строк, все заполненные реквизиты. После любой правки шаблона печать этого документа занимает минуту и сразу показывает, не сломалась ли вёрстка.
Что важно запомнить
Шаблон для 1С — это файл DOCX с метками параметров и областями для повторяющихся строк. Подключайте его через внешнюю печатную форму, чтобы не трогать типовую конфигурацию, храните макет внутри обработки, проверяйте форму на граничных данных и следите за корректным освобождением COM-объектов при работе через Word.
Частые вопросы
Можно ли сделать шаблон Word без программирования?
Полностью без кода — только если в вашей конфигурации уже есть механизм «печатные формы из файлов-шаблонов» (в некоторых типовых решениях БСП есть возможность загрузки пользовательских макетов DOCX через настройки печати). В остальных случаях потребуется минимальная внешняя обработка с процедурой печати — это несколько десятков строк кода, но написать их всё же придётся.
Почему в готовом документе остались метки вида {НомерДокумента}?
Почти всегда причина в несовпадении имён: в макете метка написана иначе, чем в коде (лишний пробел, другой регистр, опечатка). Вторая частая причина — метка разорвана на несколько внутренних фрагментов Word из-за редактирования. Удалите метку и наберите её заново одним непрерывным вводом.
Работает ли шаблон Word в веб-клиенте и на Linux-сервере?
Заполнение через COM-объект Word в этих сценариях не работает, так как требует установленного Windows-приложения. Механизм макетов офисных документов формирует DOCX программно и работает на любой платформе, но для просмотра и печати готового файла пользователю понадобится Word или совместимый офисный пакет.
Как вывести в шаблон табличную часть документа?
Создайте в Word таблицу с одной строкой-образцом, в ячейках которой стоят метки колонок, например {Товар}, {Количество}, {Сумма}. В коде для каждой строки табличной части выводите область строки, подставляя значения. Не оставляйте в таблице пустых строк — они попадут в итоговый документ.
Чем шаблон Word отличается от макета табличного документа?
Табличный макет (MXL) редактируется в конфигураторе и идеален для форм с жёсткой сеткой: счетов, накладных. Шаблон Word редактируется в привычном офисном редакторе, лучше подходит для текстовых документов и позволяет непрограммисту менять формулировки, но сложнее в управлении таблицами и итогами.
Нужно ли снимать конфигурацию с поддержки для добавления шаблона?
Нет, если использовать внешнюю печатную форму — она подключается через механизм дополнительных отчётов и обработок и не изменяет конфигурацию. Снятие с поддержки потребуется только при добавлении макета и кода непосредственно в конфигурацию, чего для типовых решений следует избегать.