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

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

Что такое макет в 1С и как с ним работать

Что такое макет в 1С, какие бывают виды макетов, как создать и отредактировать макет печатной формы в конфигураторе и вывести его кодом на языке 1С.

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

Макеты хранятся в дереве конфигурации в одноимённой ветке «Макеты», а также могут быть привязаны к конкретным объектам: документам, справочникам, отчётам. Например, у документа «Реализация товаров и услуг» может быть свой макет печатной формы накладной. Тип макета определяет, как именно будет формироваться результат: табличный документ, схема компоновки данных, HTML-документ и др.

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

Зачем нужны макеты и где они находятся

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

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

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

Виды макетов в 1С

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

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

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

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

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

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

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

Отчёты с группировками, отборами и настройками для пользователя. Требует понимания СКД, зато пользователь может менять настройки без доработки кода.

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

Формирование файлов обмена, скриптов, писем. Нет визуального форматирования.

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

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

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

Чтобы создать область, выделите нужные строки макета и задайте имя через меню «Таблица» → «Имена» → «Назначить имя» (либо через свойства выделенных строк). Имя должно быть уникальным в пределах макета и не содержать пробелов — по нему код будет обращаться к области.

Как создать макет печатной формы: пошагово

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

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

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

Как вывести макет кодом

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

Для вертикального повторения шапки таблицы на каждой странице используется метод ПовторитьПриПечатиСтроки() табличного документа, а для контроля разрыва страниц — связка ПроверитьВывод() и ВывестиГоризонтальныйРазделительСтраниц().

Перед выводом очередной области в цикле полезно проверять ТабДок.ПроверитьВывод(МассивОбластей) — так таблица не «оторвётся» от своего заголовка на границе страницы. Это стандартный приём для печатных форм с длинными табличными частями.
ПЗ
Практическое замечание

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

Для отчётов вместо табличного макета обычно используется схема компоновки данных (СКД). Она создаётся автоматически при добавлении нового отчёта и содержит запрос к данным, описание полей, ресурсов, параметров и вариантов настройки. Визуально это не «картинка» печатной формы, а конструктор логики отчёта.

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

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

Типичные ошибки при работе с макетами

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

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

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

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

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

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

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

Заполнение параметров
Норма

Все поля содержат данные документа, нет пустых квадратных скобок и текста вида [Параметр]

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

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

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

Все строки выведены, итоги сходятся с документом

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

Потерянные строки, неверные итоги, оборванная таблица на стыке страниц

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

Шрифты, рамки и форматы чисел соответствуют макету, текст не вылезает за границы ячеек

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

Съехавшие колонки, обрезанный текст, лишние знаки после запятой

Повторный вывод
Норма

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

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

Ошибка «Область не найдена» или «Параметр не найден» на части документов

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

Итог

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

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

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

Можно ли изменить печатную форму без программиста?

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

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

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

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

Потому что ячейка макета имеет заполнение «Текст», а не «Параметр» или «Шаблон». Система воспринимает содержимое как обычную надпись. Откройте макет, выделите ячейку и в палитре свойств измените значение свойства «Заполнение».

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

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

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

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

Можно ли хранить макет вне конфигурации?

Да. Макет табличного документа можно сохранить в файл (формат mxl) и загружать из файла или из хранилища значений в базе. Так иногда делают, чтобы пользователи могли править формы без конфигуратора, но тогда ответственность за корректность макета ложится на того, кто его редактирует.