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

Разработка и Конфигурация · 11 мин

Как добавить макет в 1С: подробная инструкция

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

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

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

Ниже разобран весь цикл: от создания объекта «Макет» в дереве конфигурации до обращения к нему из программного кода и проверки результата. Инструкция применима к платформам 8.3 и типовым конфигурациям, а также к самописным решениям.

Где в конфигураторе создаются макеты

Макеты в 1С хранятся в двух местах. Первый вариант — макет, привязанный к конкретному объекту метаданных: документу, справочнику, отчёту, обработке. Такой макет открывается через палитру свойств объекта или через контекстное меню в дереве конфигурации. Второй вариант — общие макеты, расположенные в ветке «Общие» → «Общие макеты». Они доступны из любого места конфигурации и удобны для шаблонов, которые используются сразу в нескольких объектах.

Чтобы добавить макет к объекту, откройте конфигуратор, найдите нужный документ или справочник в дереве конфигурации, кликните правой кнопкой и выберите «Макеты» → «Добавить макет». Либо откройте палитру свойств объекта и нажмите кнопку «Макеты» внизу окна. Запустится конструктор макета, который предложит задать имя и тип.

Для общего макета путь такой: в дереве конфигурации разверните ветку «Общие», кликните правой кнопкой по «Общие макеты» и выберите «Добавить». Дальнейшие шаги идентичны — конструктор попросит ввести имя макета и выбрать его тип.

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

Какие типы макетов бывают и что выбрать

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

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

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

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

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

Схема компоновки данных

Для отчётов на СКД: запрос, настройки, группировки. Не подходит для строгих регламентированных форм с точной вёрсткой

Текстовый документ

Шаблоны выгрузок в файлы (XML-подобные, CSV). Нет визуального форматирования

Двоичные данные

Хранение файлов внутри конфигурации: картинки, компоненты. Не редактируется визуально

Создание макета табличного документа

После выбора типа «Табличный документ» откроется редактор, внешне похожий на электронную таблицу. Здесь рисуется шаблон будущей печатной формы: статичный текст вводится прямо в ячейки, а места подстановки данных помечаются параметрами в фигурных скобках, например {НомерДокумента} или {Контрагент}.

Тип заполнения ячейки задаётся в её свойствах: «Текст» — неизменяемый текст, «Параметр» — значение подставляется из кода, «Шаблон» — смесь текста и параметров в одной ячейке. Чтобы параметры корректно заполнялись, имена в фигурных скобках должны точно совпадать с ключами структуры, которую вы передадите из модуля.

Следующий шаг — разметка областей. Выделите строки шапки, кликните правой кнопкой по номерам строк и выберите «Создать область» (или используйте Ctrl+Shift+N). Дайте области имя, например «Шапка». Аналогично создайте области «Строка» для табличной части и «Подвал» для итогов и подписей. Именно по именам областей код будет получать фрагменты макета и выводить их в нужном порядке.

Обращение к макету из программного кода

Макет сам по себе ничего не печатает — его выводит код. Для макета, привязанного к документу, получение выполняется из модуля менеджера или модуля объекта через метод ПолучитьМакет("ИмяМакета"). Из произвольного места конфигурации макет объекта доступен так: Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетСчета"), а общий макет — через ПолучитьОбщийМакет("ИмяОбщегоМакета").

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

Процедура ПечатьСчета(СсылкаНаДокумент) Экспорт

Макет = Документы.СчетНаОплату.ПолучитьМакет("МакетСчета");

ТабДок = Новый ТабличныйДокумент;

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;

ОбластьШапка.Параметры.Контрагент = СсылкаНаДокумент.Контрагент;

ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

Для Каждого СтрокаТовара Из СсылкаНаДокумент.Товары Цикл

ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);

ТабДок.Вывести(ОбластьСтрока);

КонецЦикла;

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьПодвал.Параметры.ИтогоСумма = СсылкаНаДокумент.Товары.Итог("Сумма");

ТабДок.Вывести(ОбластьПодвал);

ТабДок.Показать("Счёт на оплату");

КонецПроцедуры

Обратите внимание на метод Параметры.Заполнить(СтрокаТовара) — он автоматически сопоставляет имена параметров макета с именами колонок табличной части. Это работает, только если имена совпадают, поэтому удобно называть параметры в макете так же, как реквизиты и колонки документа.

Макет для типовой конфигурации: внешняя печатная форма

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

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

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

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

Если форма выводится пустой или с пропусками, причина почти всегда в несовпадении имён параметров или областей. Проверьте имена областей через Макет.Области в отладчике, убедитесь, что область с нужным именем существует и включает нужные строки. Ошибка «Поле объекта не обнаружено» при обращении к параметру означает, что параметра с таким именем в области нет.

Типичные ошибки при работе с макетами
01
Несовпадение имён параметров в макете и в коде — ячейки остаются пустыми без ошибки
02
Обращение к области, которой нет в макете — исключение «Область не найдена» при печати
03
Забыли обновить конфигурацию базы данных (F7) — в режиме предприятия макет не виден
04
Макет добавлен в типовую конфигурацию на поддержке — изменения теряются при обновлении
05
Параметры шаблона в ячейке типа «Текст» — фигурные скобки выводятся как обычный текст
06
Не задан тип заполнения «Шаблон» для ячейки со смешанным содержимым — параметры не подставляются
Контрольные точки

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

Печатная форма открывается из документа
Норма

Форма формируется без ошибок, все поля заполнены

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

Пустые ячейки, исключение «Область не найдена» или «Поле объекта не обнаружено»

Строки табличной части
Норма

Количество строк совпадает с табличной частью документа

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

Строки дублируются, пропущены или выводится только одна

Итоги в подвале
Норма

Суммы сходятся с данными документа

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

Итоги нулевые или не соответствуют документу

Поведение при обновлении
Норма

Форма реализована внешней обработкой и обновления ей не страшны

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

Макет встроен в типовую конфигурацию на поддержке

Частые вопросы о макетах в 1С

Можно ли добавить макет без конфигуратора, прямо в режиме 1С:Предприятие?

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

Чем общий макет отличается от макета объекта?

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

Почему параметр в фигурных скобках выводится как текст, а не подставляется?

У ячейки установлен тип заполнения «Текст». Откройте свойства ячейки в редакторе макета и смените заполнение на «Параметр» (если ячейка целиком — параметр) или «Шаблон» (если в ячейке смешанный текст с параметрами). После этого платформа начнёт обрабатывать фигурные скобки как параметры.

Как добавить в макет картинку или логотип?

В редакторе табличного документа используйте меню «Таблица» → «Рисунки» → «Вставить рисунок». Картинку можно вставить из файла или из общей картинки конфигурации. Для программной подстановки изображений используется объект «РисунокТабличногоДокумента», а данные берутся, например, из хранилища значения в справочнике.

Что делать, если после обновления типовой конфигурации мой макет пропал?

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

Можно ли вывести макет в Word или Excel вместо табличного документа?

Да, но макет в конфигураторе при этом не используется напрямую. Для Word и Excel шаблон хранят как файл (в макете типа «Двоичные данные», в справочнике или на диске), а заполнение выполняют через COM-объект или через механизм печатных форм на основе офисных шаблонов в конфигурациях с БСП.

Итог

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

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