К статье
Практический материал

Документы и Печать · 13 мин

Как сделать шаблон в Word для 1С

Как создать шаблон Word для 1С: макет DOCX с параметрами, областями и таблицами, подключение внешней печатной формы, типичные ошибки и проверка результата.

Печатные формы в 1С можно строить не только на табличных документах, но и на основе макетов Microsoft Word (DOCX). Это удобно, когда документ должен выглядеть «по-офисному»: договор, акт, письмо, коммерческое предложение — с фирменным бланком, аккуратной вёрсткой и полями, которые бухгалтер или менеджер заполняет автоматически из базы.

Суть подхода проста: вы создаёте обычный документ Word, в нужные места вставляете специальные метки (параметры и области), а 1С при печати подставляет вместо них данные из справочников и документов. Для этого потребуется либо доработка конфигурации, либо подключение внешней печатной формы — второй вариант не требует изменения типовой конфигурации и доступен даже без прав разработчика в базе клиента.

Ниже разобран весь цикл: от подготовки файла DOCX до проверки готовой печатной формы, с типичными ошибками и ограничениями, о которых часто забывают.

Когда шаблон Word оправдан, а когда лучше табличный макет

В 1С существует несколько способов построить печатную форму: табличный документ (MXL), макет Word (DOCX), макет HTML и офисный документ через механизм печати БСП. Выбор зависит от задачи, а не от привычки.

Шаблон Word выбирайте, если документ текстовый и «повествовательный»: договор с длинными пунктами, письмо контрагенту, справка, протокол. Word удобен, когда юрист или руководитель хочет самостоятельно править текст документа, не трогая код 1С — он открывает DOCX, меняет формулировки, а метки-параметры остаются на месте.

Табличный макет (MXL) лучше подходит для форм с жёсткой структурой: счета, накладные, акты с таблицами товаров, первичные документы с регламентированным видом. Там проще управлять рамками, колонтками и итогами прямо в конфигураторе.

Сравнение вариантов макетов

Табличный документ (MXL)

Подходит для счетов, накладных, ТОРГ-12. Точная разметка таблиц, но сложно править длинные тексты.

Макет Word (DOCX)

Подходит для договоров, писем, справок. Текст может править пользователь без конфигуратора, но сложнее управлять повторяющимися строками таблиц.

HTML-макет

Подходит для писем и форм, которые отправляются по почте или публикуются. Требует навыков вёрстки.

Подготовка файла DOCX: структура и требования

Создайте в Word новый документ и сверстайте документ так, как он должен выглядеть на бумаге: шапка с реквизитами, основной текст, таблица позиций, подписи. На этом этапе важно продумать, какие данные будут подставляться из 1С — номер и дата документа, наименование контрагента, ИНН, адрес, суммы, ФИО сотрудника.

Рекомендации по подготовке файла:

  • Используйте формат именно DOCX (не DOC и не RTF) — механизмы 1С работают с OpenXML-структурой.
  • Не применяйте сложные элементы: вложенные таблицы в несколько уровней, объединённые ячейки с нестандартной геометрией, текстовые поля и автофигуры могут некорректно обрабатываться при подстановке.
  • Задайте стили и шрифты в самом шаблоне — 1С подставляет только текст, форматирование берётся из DOCX.
  • На места подстановки пока впишите понятные заглушки, например [НомерДокумента] или [Контрагент] — позже вы замените их закладками или оставите как текстовые метки, в зависимости от способа заполнения.

Сохраните файл с понятным именем, например Договор_Шаблон.docx. Файл понадобится на следующих этапах — он будет храниться либо внутри внешней обработки, либо в макете конфигурации.

Разметка шаблона: параметры, области и таблицы

Чтобы 1С понимала, куда подставлять данные, шаблон размечается. Существует два основных способа разметки: закладки Word и текстовые метки в фигурных скобках. Способ зависит от того, каким механизмом будет заполняться документ.

Закладки Word

Выделите место подстановки (или поставьте курсор), перейдите на вкладку «Вставка» → «Закладка», введите имя без пробелов и кириллицы, например NomerDoc или Kontragent, и нажмите «Добавить». Имена закладок должны быть уникальны внутри документа. При программном заполнении через COM-объект код 1С обращается к закладке по имени и вставляет текст в её позицию.

Текстовые метки и области

При использовании механизма макетов офисных документов в библиотеке стандартных подсистем (БСП) применяется другой подход: параметры пишутся прямо в тексте в фигурных скобках, например {НомерДокумента}, а повторяющиеся части (строки таблицы товаров) оформляются как области. Область — это фрагмент документа, который выводится многократно: например, строка таблицы с колонками {Товар}, {Количество}, {Цена}, {Сумма}.

Для табличной части создайте в Word таблицу с одной строкой-образцом, содержащей метки колонок. При формировании печатной формы 1С будет клонировать эту строку для каждой позиции документа. Не добавляйте в таблицу лишние пустые строки — они попадут в итоговый документ.

Подключение шаблона через внешнюю печатную форму

Если конфигурация построена на БСП (УТ, ERP, Бухгалтерия, ЗУП и большинство типовых), самый безопасный путь — внешняя печатная форма. Она подключается через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки», не меняет конфигурацию и не снимает её с поддержки.

Порядок создания внешней печатной формы
  1. 1
    В конфигураторе создайте новую внешнюю обработку (Файл → Новый → Внешняя обработка).
  2. 2
    Добавьте в обработку макет типа «Двоичные данные» (или «ActiveDocument») и загрузите в него подготовленный файл DOCX.
  3. 3
    В модуле объекта обработки опишите экспортную функцию СведенияОВнешнейОбработке() — она сообщает 1С вид обработки («ПечатнаяФорма»), объекты назначения (например, «Документ.РеализацияТоваровУслуг») и команду печати.
  4. 4
    Реализуйте процедуру Печать(), в которой получите данные документа запросом, откройте макет и подставьте параметры в области и закладки.
  5. 5
    Сохраните обработку и подключите её в режиме 1С:Предприятие через «Дополнительные отчеты и обработки».
  6. 6
    Откройте документ, нажмите «Печать» и выберите новую форму — проверьте результат.

Ключевой фрагмент — функция сведений. Минимальный каркас выглядит так:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();

ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");

НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();

НоваяКоманда.Идентификатор = "ДоговорWord";

НоваяКоманда.Представление = НСтр("ru = 'Договор (Word)'");

НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Возврат ПараметрыРегистрации;

КонецФункции

В процедуре печати данные документа получают запросом, затем макет извлекается методом ПолучитьМакет("МакетДоговор") и заполняется. Для макетов DOCX в БСП предусмотрены механизмы работы с областями; альтернатива — открыть файл через COM-объект Word.Application и заполнить закладки напрямую.

Заполнение шаблона программно: два подхода

Первый подход — через COM-объект Word. Код создаёт экземпляр приложения, открывает сохранённый во временный файл макет, находит закладки по именам и записывает в них значения, после чего показывает документ пользователю. Плюс — полный контроль и возможность работать с закладками любой сложности. Минус — требуется установленный Word на машине, где выполняется код (на сервере 1С при серверном вызове это часто проблема), и нужно аккуратно освобождать COM-объекты, чтобы не плодить зависшие процессы WINWORD.EXE.

Второй подход — механизм макетов офисных документов: 1С разбирает DOCX как пакет OpenXML, подставляет параметры в метки и области без запуска Word. Это работает на сервере и в веб-клиенте, быстрее и безопаснее. Ограничение — разметка должна соответствовать ожиданиям механизма, а сложные элементы форматирования иногда обрабатываются непредсказуемо.

Маршрут решения

Как выбрать способ заполнения

Форма печатается на сервере, в веб-клиенте или Word не установлен на рабочих местахИспользуйте механизм макетов офисных документов БСП с метками в фигурных скобках
Нужна сложная логика: условные вставки, работа с закладками, построение документа из нескольких файлов и Word установлен на клиентеИспользуйте COM-объект Word с вызовом на клиенте
Конфигурация самописная без БСПCOM-объект Word либо собственная обработка структуры DOCX

Проверка результата и типичные ошибки

После подключения обработки сформируйте печатную форму на реальном документе с разными данными: короткое и длинное наименование контрагента, одна строка в табличной части и двадцать строк, пустые необязательные реквизиты. Именно граничные случаи выявляют проблемы вёрстки.

Контрольные точки

Как проверить результат

Подстановка параметров
Норма

Все метки заменены реальными данными, в документе нет остатков вида {Параметр}

Тревожный признак

В тексте остались фигурные скобки или пустые места — имя параметра в макете не совпадает с именем в коде

Табличная часть
Норма

Строки выводятся по числу позиций, итоги и нумерация корректны

Тревожный признак

Строки дублируются, съезжают колонки или выводится лишняя пустая строка-образец

Форматирование
Норма

Шрифты, отступы и подписи соответствуют шаблону

Тревожный признак

Подставленный текст отличается стилем от остального документа — метка вставлена внутрь текста с другим форматированием

Открытие файла
Норма

Документ открывается в Word без предупреждений о повреждении

Тревожный признак

Word сообщает о нечитаемом содержимом — файл был испорчен при сохранении в макет или при программной обработке

Типичные ошибки
01
Использование кириллицы и пробелов в именах закладок — Word неявно переименовывает такие закладки, и код 1С их не находит.
02
Метка параметра разорвана на несколько «run»-фрагментов из-за исправлений при наборе — механизм не распознаёт {Номер} как единое целое; лечится повторным набором метки целиком.
03
Хранение шаблона только на диске у одного сотрудника — после обновления или смены компьютера форма перестаёт работать; макет должен лежать внутри обработки или конфигурации.
04
Заполнение через COM на сервере без установленного Word — вызов завершается ошибкой; переносите формирование на клиента или используйте механизм макетов.
05
Неосвобождённые COM-объекты — в диспетчере задач копятся процессы WINWORD.EXE; всегда вызывайте Quit() и обнуляйте переменные.

Сопровождение шаблона: изменения и перенос

Со временем текст договора меняется: юристы правят формулировки, добавляются реквизиты. Если макет хранится внутри внешней обработки, порядок изменения такой: извлеките DOCX из макета (в конфигураторе — открыть макет и сохранить файл), внесите правки в Word, не трогая метки и закладки, загрузите файл обратно и обновите обработку в справочнике дополнительных отчётов и обработок. Пользователям ничего переустанавливать не нужно.

При переносе формы в другую базу достаточно перенести файл обработки (.epf) — макет путешествует внутри него. Если же шаблон встроен в конфигурацию как макет, изменения выполняются только через конфигуратор с последующим обновлением, что для типовых конфигураций на поддержке нежелательно.

Удобно завести для каждой печатной формы тестовый документ с «эталонными» данными: длинное наименование контрагента, максимальное число строк, все заполненные реквизиты. После любой правки шаблона печать этого документа занимает минуту и сразу показывает, не сломалась ли вёрстка.
ПЗ
Практическое замечание
Итог

Что важно запомнить

Шаблон для 1С — это файл DOCX с метками параметров и областями для повторяющихся строк. Подключайте его через внешнюю печатную форму, чтобы не трогать типовую конфигурацию, храните макет внутри обработки, проверяйте форму на граничных данных и следите за корректным освобождением COM-объектов при работе через Word.

Частые вопросы

Можно ли сделать шаблон Word без программирования?

Полностью без кода — только если в вашей конфигурации уже есть механизм «печатные формы из файлов-шаблонов» (в некоторых типовых решениях БСП есть возможность загрузки пользовательских макетов DOCX через настройки печати). В остальных случаях потребуется минимальная внешняя обработка с процедурой печати — это несколько десятков строк кода, но написать их всё же придётся.

Почему в готовом документе остались метки вида {НомерДокумента}?

Почти всегда причина в несовпадении имён: в макете метка написана иначе, чем в коде (лишний пробел, другой регистр, опечатка). Вторая частая причина — метка разорвана на несколько внутренних фрагментов Word из-за редактирования. Удалите метку и наберите её заново одним непрерывным вводом.

Работает ли шаблон Word в веб-клиенте и на Linux-сервере?

Заполнение через COM-объект Word в этих сценариях не работает, так как требует установленного Windows-приложения. Механизм макетов офисных документов формирует DOCX программно и работает на любой платформе, но для просмотра и печати готового файла пользователю понадобится Word или совместимый офисный пакет.

Как вывести в шаблон табличную часть документа?

Создайте в Word таблицу с одной строкой-образцом, в ячейках которой стоят метки колонок, например {Товар}, {Количество}, {Сумма}. В коде для каждой строки табличной части выводите область строки, подставляя значения. Не оставляйте в таблице пустых строк — они попадут в итоговый документ.

Чем шаблон Word отличается от макета табличного документа?

Табличный макет (MXL) редактируется в конфигураторе и идеален для форм с жёсткой сеткой: счетов, накладных. Шаблон Word редактируется в привычном офисном редакторе, лучше подходит для текстовых документов и позволяет непрограммисту менять формулировки, но сложнее в управлении таблицами и итогами.

Нужно ли снимать конфигурацию с поддержки для добавления шаблона?

Нет, если использовать внешнюю печатную форму — она подключается через механизм дополнительных отчётов и обработок и не изменяет конфигурацию. Снятие с поддержки потребуется только при добавлении макета и кода непосредственно в конфигурацию, чего для типовых решений следует избегать.