Разработка и Конфигурация · 11 мин
Как добавить макет в 1С: подробная инструкция
Как добавить макет в 1С: создание макета в конфигураторе, типы макетов, привязка к печатной форме, обращение из кода. Пошаговая инструкция с примерами.
Макет в 1С — это шаблон, на основе которого платформа формирует печатные формы, отчёты и другие выводимые документы. Макет может представлять собой табличный документ, схему компоновки данных, HTML-документ, текст, двоичные данные или геосхему. Чаще всего макеты добавляют, когда нужно создать новую печатную форму для документа или переопределить внешний вид существующей.
Добавление макета выполняется в конфигураторе и требует прав на изменение конфигурации. Если конфигурация находится на поддержке без возможности изменения, придётся либо включить режим редактирования, либо реализовать печатную форму через внешнюю обработку — этот путь безопаснее для типовых решений, которые регулярно обновляются.
Ниже разобран весь цикл: от создания объекта «Макет» в дереве конфигурации до обращения к нему из программного кода и проверки результата. Инструкция применима к платформам 8.3 и типовым конфигурациям, а также к самописным решениям.
Где в конфигураторе создаются макеты
Макеты в 1С хранятся в двух местах. Первый вариант — макет, привязанный к конкретному объекту метаданных: документу, справочнику, отчёту, обработке. Такой макет открывается через палитру свойств объекта или через контекстное меню в дереве конфигурации. Второй вариант — общие макеты, расположенные в ветке «Общие» → «Общие макеты». Они доступны из любого места конфигурации и удобны для шаблонов, которые используются сразу в нескольких объектах.
Чтобы добавить макет к объекту, откройте конфигуратор, найдите нужный документ или справочник в дереве конфигурации, кликните правой кнопкой и выберите «Макеты» → «Добавить макет». Либо откройте палитру свойств объекта и нажмите кнопку «Макеты» внизу окна. Запустится конструктор макета, который предложит задать имя и тип.
Для общего макета путь такой: в дереве конфигурации разверните ветку «Общие», кликните правой кнопкой по «Общие макеты» и выберите «Добавить». Дальнейшие шаги идентичны — конструктор попросит ввести имя макета и выбрать его тип.
- 1Откройте конфигуратор и разблокируйте конфигурацию для изменений (Конфигурация → Поддержка → Настройка поддержки)
- 2Найдите объект или ветку «Общие макеты», кликните правой кнопкой → «Добавить макет»
- 3Задайте имя макета латиницей без пробелов, например МакетСчета
- 4Выберите тип макета — для печатных форм это «Табличный документ»
- 5Нарисуйте шаблон: шапку, область строк, подвал, разметьте параметры в фигурных скобках
- 6Обновите конфигурацию базы данных (F7) и проверьте вывод печатной формы в режиме предприятия
Какие типы макетов бывают и что выбрать
При создании макета конструктор предлагает несколько типов, и выбор влияет на то, как с макетом можно будет работать дальше. Для печатных форм почти всегда выбирают «Табличный документ» — он позволяет рисовать шаблон визуально, задавать параметры и области, а затем выводить его программно с подстановкой данных.
Остальные типы решают специальные задачи. Схема компоновки данных нужна для отчётов на СКД, HTML-документ — для отображения форматированного содержимого в поле HTML, текстовый документ — для шаблонов выгрузок, двоичные данные — для хранения файлов внутри конфигурации (например, внешних компонент или картинок), ActiveDocument и геосхема — для узких сценариев.
Сравнение типов макетов
Стандарт для печатных форм: визуальный редактор, параметры, области. Подходит для счетов, актов, накладных
Для отчётов на СКД: запрос, настройки, группировки. Не подходит для строгих регламентированных форм с точной вёрсткой
Шаблоны выгрузок в файлы (XML-подобные, CSV). Нет визуального форматирования
Хранение файлов внутри конфигурации: картинки, компоненты. Не редактируется визуально
Создание макета табличного документа
После выбора типа «Табличный документ» откроется редактор, внешне похожий на электронную таблицу. Здесь рисуется шаблон будущей печатной формы: статичный текст вводится прямо в ячейки, а места подстановки данных помечаются параметрами в фигурных скобках, например {НомерДокумента} или {Контрагент}.
Тип заполнения ячейки задаётся в её свойствах: «Текст» — неизменяемый текст, «Параметр» — значение подставляется из кода, «Шаблон» — смесь текста и параметров в одной ячейке. Чтобы параметры корректно заполнялись, имена в фигурных скобках должны точно совпадать с ключами структуры, которую вы передадите из модуля.
Следующий шаг — разметка областей. Выделите строки шапки, кликните правой кнопкой по номерам строк и выберите «Создать область» (или используйте Ctrl+Shift+N). Дайте области имя, например «Шапка». Аналогично создайте области «Строка» для табличной части и «Подвал» для итогов и подписей. Именно по именам областей код будет получать фрагменты макета и выводить их в нужном порядке.
Обращение к макету из программного кода
Макет сам по себе ничего не печатает — его выводит код. Для макета, привязанного к документу, получение выполняется из модуля менеджера или модуля объекта через метод ПолучитьМакет("ИмяМакета"). Из произвольного места конфигурации макет объекта доступен так: Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетСчета"), а общий макет — через ПолучитьОбщийМакет("ИмяОбщегоМакета").
Типовой алгоритм вывода выглядит так: получить макет, получить область шапки, заполнить её параметры, вывести в результирующий табличный документ, затем в цикле вывести строки табличной части, и в конце вывести подвал. Результат показывают пользователю или отправляют на печать.
Процедура ПечатьСчета(СсылкаНаДокумент) Экспорт
Макет = Документы.СчетНаОплату.ПолучитьМакет("МакетСчета");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
ОбластьШапка.Параметры.Контрагент = СсылкаНаДокумент.Контрагент;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовара Из СсылкаНаДокумент.Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.ИтогоСумма = СсылкаНаДокумент.Товары.Итог("Сумма");
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Показать("Счёт на оплату");
КонецПроцедуры
Обратите внимание на метод Параметры.Заполнить(СтрокаТовара) — он автоматически сопоставляет имена параметров макета с именами колонок табличной части. Это работает, только если имена совпадают, поэтому удобно называть параметры в макете так же, как реквизиты и колонки документа.
Макет для типовой конфигурации: внешняя печатная форма
Если конфигурация типовая и регулярно обновляется (1С:Бухгалтерия, Управление торговлей, ЗУП), встраивать собственный макет прямо в конфигурацию рискованно: при обновлении изменения могут быть потеряны или усложнят сравнение и объединение. Правильный путь — внешняя печатная форма, подключаемая через механизм «Дополнительные отчеты и обработки».
Внешняя печатная форма — это файл обработки (.epf), внутри которого лежит макет и экспортная функция Печать() либо процедура по стандарту БСП. Макет добавляется в обработку точно так же, как в конфигураторе: в дереве обработки правой кнопкой → «Макеты» → «Добавить макет». После подключения обработки в справочнике дополнительных отчётов и обработок кнопка печати появится в карточке документа.
Проверка результата и типичные ошибки
После обновления конфигурации базы данных (клавиша F7) откройте режим «1С:Предприятие» и сформируйте печатную форму. Проверьте, что все параметры заполнены, строки табличной части выводятся в правильном количестве, итоги в подвале сходятся с данными документа, а форма корректно разбивается на страницы при печати.
Если форма выводится пустой или с пропусками, причина почти всегда в несовпадении имён параметров или областей. Проверьте имена областей через Макет.Области в отладчике, убедитесь, что область с нужным именем существует и включает нужные строки. Ошибка «Поле объекта не обнаружено» при обращении к параметру означает, что параметра с таким именем в области нет.
Как проверить результат
Форма формируется без ошибок, все поля заполнены
Пустые ячейки, исключение «Область не найдена» или «Поле объекта не обнаружено»
Количество строк совпадает с табличной частью документа
Строки дублируются, пропущены или выводится только одна
Суммы сходятся с данными документа
Итоги нулевые или не соответствуют документу
Форма реализована внешней обработкой и обновления ей не страшны
Макет встроен в типовую конфигурацию на поддержке
Частые вопросы о макетах в 1С
Можно ли добавить макет без конфигуратора, прямо в режиме 1С:Предприятие?
Нет, макет — это объект метаданных, и создать его можно только в конфигураторе. В режиме предприятия можно лишь редактировать уже сформированный табличный документ перед печатью, если у него включён режим редактирования. Альтернатива без изменения конфигурации — внешняя печатная форма, которая подключается через «Дополнительные отчеты и обработки».
Чем общий макет отличается от макета объекта?
Макет объекта хранится внутри конкретного документа, справочника или отчёта и логичен для шаблонов, относящихся только к нему. Общий макет лежит в ветке «Общие макеты» и доступен из любого кода конфигурации — его выбирают, когда один шаблон используют несколько объектов, например единая шапка с логотипом компании.
Почему параметр в фигурных скобках выводится как текст, а не подставляется?
У ячейки установлен тип заполнения «Текст». Откройте свойства ячейки в редакторе макета и смените заполнение на «Параметр» (если ячейка целиком — параметр) или «Шаблон» (если в ячейке смешанный текст с параметрами). После этого платформа начнёт обрабатывать фигурные скобки как параметры.
Как добавить в макет картинку или логотип?
В редакторе табличного документа используйте меню «Таблица» → «Рисунки» → «Вставить рисунок». Картинку можно вставить из файла или из общей картинки конфигурации. Для программной подстановки изображений используется объект «РисунокТабличногоДокумента», а данные берутся, например, из хранилища значения в справочнике.
Что делать, если после обновления типовой конфигурации мой макет пропал?
Если макет был добавлен внутрь типовой конфигурации, при обновлении с полной загрузкой конфигурации поставщика изменения действительно теряются. Восстановите макет из резервной копии и перенесите печатную форму во внешнюю обработку — тогда обновления больше не будут её затрагивать.
Можно ли вывести макет в Word или Excel вместо табличного документа?
Да, но макет в конфигураторе при этом не используется напрямую. Для Word и Excel шаблон хранят как файл (в макете типа «Двоичные данные», в справочнике или на диске), а заполнение выполняют через COM-объект или через механизм печатных форм на основе офисных шаблонов в конфигурациях с БСП.
Что важно запомнить
Макет добавляется в конфигураторе через «Добавить макет» у объекта или в ветке «Общие макеты». Для печатных форм выбирайте тип «Табличный документ», размечайте области и параметры, выводите макет кодом через ПолучитьМакет() и ПолучитьОбласть(). Для типовых конфигураций используйте внешние печатные формы, чтобы не потерять доработки при обновлении, и всегда делайте резервную копию перед изменениями.