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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подходит для выгрузок и экспорта. Не предназначен для печати с точной вёрсткой.

Как создать макет в конфигураторе

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

В редакторе нарисуйте статическую часть формы: шапку с названием, таблицу с колонками, подвал с подписями. Затем выделите строки или ячейки, которые должны заполняться данными, и назначьте им параметры. Для этого в свойствах ячейки установите «Заполнение — Параметр» и задайте имя параметра, либо используйте синтаксис квадратных скобок прямо в тексте ячейки: [НомерДокумента]. Текст в угловых скобках вида <Организация> тоже создаёт параметр автоматически.

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

Как заполнить макет данными из кода

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

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

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

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

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

ОбластьШапка.Параметры.Организация = Организация;

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

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

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

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

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

КонецЦикла;

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

Как изменить печатную форму без конфигуратора

Во многих типовых конфигурациях есть механизм «Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм». Здесь хранятся макеты, доступные для редактирования прямо в режиме Предприятие: откройте нужный макет, измените текст, добавьте или уберите параметры и сохраните. Изменённый макет подменяет типовой без снятия конфигурации с поддержки.

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

Маршрут решения

Как выбрать способ изменения формы

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

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

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

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

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

Границы самостоятельной работы и когда нужен разработчик

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

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

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

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

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

Все поля формы содержат данные документа

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

Пустые места или текст вида [Параметр] в готовой форме

Многостраничный вывод
Норма

Шапка таблицы повторяется, итоги и подписи на последней странице

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

Подвал на отдельном листе, строки обрезаны

Числа и даты
Норма

Суммы с нужным числом знаков, даты в привычном формате

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

Лишние нули, дата со временем там, где нужен только день

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

Чем макет отличается от печатной формы?

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

Можно ли вернуть типовой макет после правок?

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

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

Ячейка оформлена как шаблон, но код не заполнил параметры области. Проверьте, что для области вызван метод Параметры.Заполнить или параметры присвоены поимённо, и что имена в макете и в коде совпадают.

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

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

Что делать, если строк таблицы много и подвал уезжает на новую страницу?

Перед выводом подвала используйте метод ПроверитьВывод с массивом областей: следующей строки и подвала. Если области не помещаются, выведите разрыв страницы (ВывестиГоризонтальныйРазделительСтраниц), чтобы подвал не оказался на листе в одиночестве.

Можно ли использовать один макет для нескольких видов документов?

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

Итог

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

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