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

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

Объект Макет в 1С: назначение, типы и практика использования

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

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

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

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

Типы макетов и когда какой применять

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

  • Табличный документ — самый распространённый тип. Используется для печатных форм: счетов, накладных, актов, прайсов. Редактируется как таблица с ячейками, поддерживает области, параметры и шаблоны ячеек.
  • Схема компоновки данных — основа отчётов на СКД. Описывает источники данных, связи, настройки группировок и отборов.
  • Текстовый документ — шаблоны текстов, запросов, писем, скриптов обмена.
  • HTML-документ — веб-страницы для вывода в поле HTML-документа.
  • Географическая схема — карты для отображения данных по регионам.
  • Графическая схема — блок-схемы, карты маршрутов бизнес-процессов.
  • Двоичные данные — произвольные файлы: картинки, внешние компоненты, файлы Excel с оформлением.
  • Макет оформления компоновки данных — переопределение внешнего вида элементов отчёта на СКД.
  • ActiveDocument — шаблоны документов Word/Excel для заполнения через COM-технологию.

Устройство табличного макета: области, параметры, шаблоны

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

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

Ключевой приём: область «Строка» выводится в цикле — один раз для каждой строки табличной части документа. Перед выводом параметры области заполняются данными текущей строки. Так из одной области-шаблона формируется вся таблица товаров произвольной длины.

Как создать макет и вывести печатную форму

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

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

Минимальный фрагмент кода выглядит так:

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

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

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

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

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

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

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

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

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

КонецЦикла;

ТабДок.Показать();

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

Общие макеты и макеты объектов: что выбрать

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

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

Макет объекта

Подходит, когда шаблон используется только этим объектом: печатная форма конкретного документа, схема конкретного отчёта. Упрощает сопровождение — макет лежит рядом с логикой объекта.

Общий макет

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

Макет в виде двоичных данных / ActiveDocument

Подходит для сложных форм, согласованных с заказчиком в Word/Excel. Ограничение: заполнение требует COM-технологий и работает только под Windows.

Практическое правило: если сомневаетесь, создавайте макет у объекта. Перенести его в общие позже несложно, а вот разбираться, какие пять документов используют один общий макет и не сломается ли что-то при правке, — труднее.

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

После формирования печатной формы проверьте не только визуальную корректность, но и поведение документа при печати: разрывы страниц, повторение шапки таблицы, ширину колонок. В табличном документе для этого есть свойства ПовторятьПриПечатиСтроки, АвтоМасштаб, ОриентацияСтраницы.

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

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

Вывод данных
Норма

Все параметры заполнены, значения соответствуют документу

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

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

Многострочная таблица
Норма

Каждая строка табличной части выведена отдельной областью

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

Выводится только первая или последняя строка — цикл построен неверно

Разрывы страниц
Норма

Таблица переносится с повтором шапки, итоги на последней странице

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

Строка разрезается пополам или подвал «уезжает» на отдельный лист

Подстановка шаблонов
Норма

В ячейках-шаблонах текст и значения объединены корректно

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

Видны квадратные скобки с именами параметров — заполнение не отработало

Типичные ошибки
01
Редактирование макета в режиме предприятия вместо конфигуратора — макет из базы изменить нельзя, правки делаются только в конфигураторе с последующим обновлением
02
Использование области без проверки её существования — переименовали область в макете, забыли поправить код, получили исключение при печати
03
Заполнение параметров после вывода области — изменения не попадают в результат, так как Вывести() фиксирует копию области
04
Вывод строк без проверки вместимости страницы — на длинных документах форма разваливается; используйте ПроверитьВывод() для подвала
05
Хранение изменяемых пользователем форм только в макете конфигурации — при обновлении типовой конфигурации правки затрутся; для пользовательских правок применяйте внешние печатные формы

Макеты в отчётах и при обмене данными

Помимо печатных форм, макет типа «Схема компоновки данных» — обязательная часть отчёта на СКД. Он создаётся автоматически при добавлении отчёта и содержит запрос, описание полей, ресурсов и настроек. Редактируется такой макет визальным конструктором, а не вручную: прямая правка XML схемы — редкий приём для специальных задач.

Текстовые и HTML-макеты применяются в интеграциях: шаблоны JSON/XML для обмена с внешними системами, тела писем, SQL-подобные заготовки. Макет с двоичными данными удобен для хранения файлов, которые должны обновляться вместе с конфигурацией, — например, внешней печатной формы в формате офисного документа.

FAQ

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

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

Можно ли изменить макет без конфигуратора?

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

Почему в печатной форме видны квадратные скобки с именами параметров?

Это значит, что ячейка имеет заполнение «Шаблон» или «Параметр», но соответствующий параметр не был заполнен из кода. Проверьте точное совпадение имени параметра в макете и в коде, включая регистр букв, и убедитесь, что заполнение выполняется до вызова Вывести().

Как вывести печатную форму в несколько экземпляров или для списка документов?

Цикл строится на уровне документов: для каждой ссылки формируется свой набор областей в общий табличный документ, между документами выводится разрыв страницы методом ВывестиГоризонтальныйРазделительСтраниц(). В типовых конфигурациях эту логику берёт на себя менеджер печати.

Какой тип макета выбрать для сложной формы, согласованной в Word?

Используйте макет типа ActiveDocument или двоичные данные с файлом офисного формата и заполняйте его через закладки/поля. Учтите ограничение: такое заполнение работает только на клиенте под Windows с установленным офисным пакетом, на сервере Linux этот вариант недоступен.

Нужен ли отдельный макет для каждого языка?

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

Итог

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

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