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

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

Как заполнить шаблон в макете 1С: пошаговое руководство

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

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

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

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

Какие виды макетов бывают и где хранится шаблон

В конфигураторе макеты создаются у объектов метаданных (справочников, документов, отчётов) или как общие макеты в ветке «Общие → Макеты». Тип макета выбирается при создании и определяет, как с ним работать. Основные типы: табличный документ, текстовый документ, HTML-документ, схема компоновки данных, географическая схема и другие. Для печатных форм почти всегда используется табличный документ.

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

Как открыть макет и найти нужный шаблон

В конфигураторе откройте дерево конфигурации, найдите объект (например, документ «Реализация товаров и услуг») и разверните ветку «Макеты». Двойной щелчок открывает табличный документ макета. Если макетов несколько, ориентируйтесь по названиям: «МакетСчет», «МакетАкт», «ПФ_MXL_ТОРГ12» и т. п. В типовых конфигурациях поиск нужного макета удобно начинать с модуля менеджера объекта — там в процедуре печати видно, какой макет получается функцией ПолучитьМакет().

Для внешних печатных форм макет открывается из файла обработки (.epf): в конфигураторе «Файл → Открыть», затем в дереве обработки найдите макет. Для шаблонов договоров в формате DOCX макет редактируется в пользовательском режиме: раздел с печатными формами и шаблонами, открытие файла шаблона, правка в Word с сохранением управляющих конструкций вида {Дата} или [Организация].

Структура макета: области, параметры и шаблоны ячеек

Табличный макет делится на именованные области: шапка, строка табличной части, подвал, итоги. Область создаётся выделением строк и назначением имени через «Таблица → Имена → Назначить имя» (Ctrl+Shift+N). Программно область получается методом ПолучитьОбласть("ИмяОбласти"), поэтому имя в макете и в коде должно совпадать символ в символ, включая регистр.

Внутри ячеек размещаются три вида содержимого. Текст — неизменяемая надпись. Параметр — значение в квадратных скобках [Номенклатура], заполняется из кода. Шаблон — смесь текста и параметров, например «Счёт № [Номер] от [Дата]»; тип содержимого ячейки переключается в палитре свойств («Заполнение»: Текст / Параметр / Шаблон). Частая ошибка — вписать [Номер] в ячейку с типом «Текст»: на печать выйдет буквально «[Номер]», а не значение.

Для ячеек с датами, числами и суммами задавайте формат в свойствах ячейки или присваивайте уже отформатированную строку из кода через Формат(). Это избавит от вида «01.01.0001 0:00:00» и лишних дробных разрядов в суммах.

Заполнение шаблона программно: базовый цикл

Программное заполнение строится по повторяющейся схеме: получить макет, получить область, заполнить параметры области, вывести область в результирующий табличный документ. Для шапки и подвала это делается один раз, для строк табличной части — в цикле по выборке данных.

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

// Шапка — один раз
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Шапка.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Формат(Шапка.Дата, "ДЛФ=D");
ТабДок.Вывести(ОбластьШапка);

// Строки — в цикле
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовара Из Товары Цикл
    ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

Метод Параметры.Заполнить(Источник) переносит значения по совпадающим именам — это удобно, когда имена параметров макета совпадают с именами колонок выборки или реквизитов объекта. Если имён не хватает или нужны вычисляемые значения (сумма прописью, ФИО в нужном падеже), присваивайте параметры по одному. После вывода всех областей табличный документ показывается пользователю методом Показать() или отправляется на печать.

Порядок заполнения шаблона
  1. 1
    Откройте макет и убедитесь, что нужные области именованы, а параметры обозначены в квадратных скобках
  2. 2
    Проверьте тип заполнения ячеек с параметрами: «Параметр» или «Шаблон», не «Текст»
  3. 3
    В коде получите макет через ПолучитьМакет() и области через ПолучитьОбласть()
  4. 4
    Заполните параметры области значениями из данных объекта или выборки
  5. 5
    Выведите область в табличный документ; для строк табличной части повторите заполнение в цикле
  6. 6
    Откройте форму на тестовом документе и сверьте все поля с исходными данными

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

Ручное заполнение применяется, когда макет — это болванка для разового документа: откройте табличный документ, впишите значения в ячейки, настройте ширину колонок и сохраните как файл MXL или Excel. Такой способ подходит для форм без привязки к данным базы — бланков, памяток, этикеток-заготовок.

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

Способы изменения печатной формы

Правка макета в конфигураторе

Быстро для разовой задачи, но требует снятия с поддержки и аккуратности при обновлениях

Внешняя печатная форма (.epf)

Не трогает конфигурацию, переносится между базами; нужны базовые навыки встроенного языка

Шаблон DOCX в пользовательском режиме

Редактируется в Word без программирования; подходит для договоров и писем, ограничен возможностями типового механизма

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

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

Типичные ошибки
01
Имя параметра в коде не совпадает с именем в макете — поле выводится пустым, ошибки при этом может не быть
02
Ячейка имеет тип заполнения «Текст» вместо «Параметр» — на печать выходит буквальная строка [Номер]
03
Область получена один раз, но в цикле параметры не очищаются — в следующей строке остаются значения предыдущей
04
ПолучитьОбласть() вызывается с несуществующим именем — возникает ошибка «Область не найдена» при печати
05
Формат даты и чисел не задан — в форме появляются значения вида «01.01.0001 0:00:00»
06
Правка типового макета без копии — изменения теряются при обновлении конфигурации

Отдельно проверьте поведение при пустых данных: если у документа нет части реквизитов, параметры должны выводиться как пустые строки, а не как «Неопределено». При необходимости подставляйте заглушки («—») или скрывайте строки целиком через условия в коде.

Итог

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

Заполнение шаблона макета сводится к трём вещам: правильно именованные области и параметры в макете, корректное заполнение параметров в коде (ПолучитьОбласть → Параметры → Вывести) и проверка на реальных данных. Для пользовательских правок предпочтительнее внешние печатные формы — они не затрагивают конфигурацию.

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

Почему параметр заполнен в коде, но на печати пусто?

Чаще всего имя параметра в коде не совпадает с именем в макете (опечатка, лишний пробел) или ячейка имеет тип заполнения «Текст». Проверьте свойства ячейки и точное написание имени в обоих местах.

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

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

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

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

Что делать, если длинный текст разрывает верстку формы?

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

Сохранится ли изменённый макет после обновления конфигурации?

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