Разработка и Конфигурация · 11 мин
Как в 1С сделать макет: полная инструкция
Разбираем, как создать макет в 1С: типы макетов, работа с табличным документом, области, параметры и заполнение. Пошаговая инструкция с примерами кода.
Макет в 1С — это шаблон, по которому система строит печатные формы, отчёты и другие итоговые документы. Без макета нельзя вывести на печать счёт, акт, накладную или произвольный отчёт с фирменным оформлением: программе нужно указать, какие области выводить, где расположены параметры и как форматировать итоговый документ. Макеты создаются в конфигураторе и хранятся либо в составе объектов конфигурации (справочников, документов, отчётов), либо в общей ветке «Общие макеты», откуда доступны из любого места кода.
Работа с макетом состоит из трёх этапов: создание самого макета нужного типа, разметка областей и параметров в редакторе и написание программного кода, который заполняет макет данными и выводит результат пользователю. Ошибка на любом из этапов приводит к типичным проблемам — пустым полям в печатной форме, ошибке «Область не найдена» или съехавшей вёрстке. Ниже разобран весь цикл: от выбора типа макета до проверки готовой печатной формы.
Какие типы макетов существуют и что выбрать
При добавлении макета конфигуратор предлагает несколько типов, и выбор зависит от задачи. Самый распространённый — Табличный документ: он подходит для печатных форм документов, актов, счетов и любых форм с фиксированной вёрсткой. Тип Схема компоновки данных используется для отчётов на СКД, где структуру данных формирует запрос, а не ручная разметка. Тип Двоичные данные и ActiveDocument применяют для хранения готовых файлов — например, шаблона Word или Excel, который заполняется через COM-объекты.
Также доступны типы «Текстовый документ», «HTML-документ», «Географическая схема», «Графическая схема» и «Схема запроса» — они нужны в специальных сценариях. Если цель — обычная печатная форма, выбирайте табличный документ: он даёт визуальный редактор, похожий на Excel, и полный контроль над областями, параметрами и форматированием.
Сравнение типов макетов
Печатные формы с фиксированной вёрсткой. Полный контроль, но каждое поле заполняется вручную в коде.
Отчёты с группировками и отборами. Настраивается без кода, но сложнее для произвольной вёрстки.
Когда бухгалтерия требует форму точно как в привычном файле. Требует MS Office на компьютере и работы через COM.
Где создавать макет: объект или общие макеты
Макет можно добавить в двух местах. Первый вариант — внутри конкретного объекта: откройте в дереве конфигурации нужный документ или справочник, перейдите на ветку «Макеты» и нажмите «Добавить». Такой макет логично использовать, если печатная форма относится только к этому объекту — например, печать счёта у документа «СчётНаОплату». Получить его в коде можно через менеджер объекта.
Второй вариант — ветка «Общие» → «Общие макеты». Сюда выносят шаблоны, которые используются в нескольких местах: общий подвал с подписями, типовая шапка с логотипом, формы, вызываемые из разных документов. Общий макет доступен через ПолучитьОбщийМакет("ИмяМакета"). Правило простое: один объект — макет внутри объекта, несколько потребителей — общий макет.
После нажатия «Добавить» откроется конструктор макета. Укажите имя (латиницей, без пробелов — оно будет использоваться в коде), выберите тип «Табличный документ» и при необходимости воспользуйтесь конструктором печати, который автоматически сформирует шапку, строку табличной части и подвал по реквизитам объекта.
- 1Откройте конфигуратор и найдите нужный объект (или ветку «Общие макеты»)
- 2Нажмите «Добавить» в ветке «Макеты», задайте имя латиницей
- 3Выберите тип «Табличный документ» и откройте редактор
- 4Нарисуйте форму: шапку, строки таблицы, подвал
- 5Выделите области и задайте им имена
- 6Отметьте ячейки-параметры и настройте их свойства
- 7Напишите код заполнения и проверьте вывод в режиме предприятия
Разметка областей и параметров в редакторе
Редактор табличного документа внешне похож на Excel: ячейки, объединения, границы, шрифты. Ключевое понятие — область: именованный фрагмент макета, который выводится в итоговый документ отдельной командой. Чтобы создать область, выделите нужные строки (по номерам строк слева), затем меню «Таблица» → «Имена» → «Назначить имя» и введите имя, например «Шапка», «СтрокаТовары», «Подвал». Стандартная структура печатной формы: шапка с реквизитами документа, повторяемая строка табличной части, подвал с итогами и подписями.
Ячейки бывают трёх видов, и это критично для заполнения. Обычный текст выводится как есть. Параметр — место подстановки данных: введите в ячейку имя в квадратных скобках, например [НомерДокумента], либо откройте свойства ячейки и установите «Заполнение» = «Параметр», а в поле «Текст» — имя параметра без скобок. Шаблон — сочетание текста и параметров в одной ячейке: выберите «Заполнение» = «Шаблон» и пишите текст с параметрами в квадратных скобках, например Счёт № [Номер] от [Дата].
Для табличной части сделайте одну строку-область с параметрами колонок — она будет выводиться в цикле по каждой строке документа. Если строки могут не поместиться на страницу, настройте повторение заголовков колонок: выделите строку заголовка таблицы и назначьте её как область, которую код выводит после каждого разрыва страницы, либо используйте свойство табличного документа «Повторять при печати».
Программное заполнение макета данными
Заполнение выполняется в модуле менеджера объекта (для печатных форм) или в модуле команды. Базовая последовательность: получить макет, получить область, заполнить параметры, вывести область в результирующий табличный документ. Типовой код выглядит так:
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.СчетНаОплату.ПолучитьМакет("Печать");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Ссылка.Номер;
ОбластьШапка.Параметры.Контрагент = Ссылка.Контрагент;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТовары");
Для Каждого Стр Из Ссылка.Товары Цикл
ОбластьСтрока.Параметры.Заполнить(Стр);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Метод Параметры.Заполнить(Стр) удобен тем, что автоматически подставляет значения, имена которых совпадают с именами параметров. Но он заполняет только совпадающие параметры — остальные останутся пустыми. Для вычисляемых значений (сумма прописью, итоги, форматированные даты) присваивайте параметры явно. Если макет общий, первая строка меняется на Макет = ПолучитьОбщийМакет("ИмяМакета").
Готовый табличный документ нужно вернуть пользователю: в управляемых формах его помещают в реквизит формы типа «ТабличныйДокумент» или показывают через ТабДок.Показать() (в толстом клиенте), а в типовых механизмах печати (БСП) — передают в коллекцию печатных форм процедуры ДобавитьКомандуПечати / функции формирования.
Макет = ПолучитьОбщийМакет("МакетАкта");
Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.НомерАкта = "17";
ТабДок.Вывести(Область);Проверка результата и типичные ошибки
После написания кода обновите конфигурацию базы данных (F7), запустите режим предприятия и сформируйте печатную форму на тестовом документе с реальными данными — включая длинные наименования, пустые реквизиты и максимальное количество строк табличной части. Проверяйте не только наличие данных, но и вёрстку: переносы строк, разрывы страниц, выравнивание чисел.
Как проверить результат
ПолучитьОбласть() отрабатывает без исключения
Ошибка «Область не найдена» при формировании
Все поля формы содержат данные документа
Пустые ячейки или текст в квадратных скобках
Заголовки таблицы повторяются, итоги на последней странице
Таблица обрывается, подвал уезжает на середину страницы
Ограничения и когда макет лучше не трогать
Изменение макета типовой конфигурации — это доработка, которая усложняет обновление: при каждом апдейте конфигуратор будет сравнивать ваш макет с макетом поставщика. Если конфигурация на поддержке, безопаснее использовать внешние печатные формы (механизм «Дополнительные отчеты и обработки» в БСП) — макет хранится внутри внешней обработки и не затрагивает типовую конфигурацию вообще.
Ещё одно ограничение — макеты типа «Табличный документ» не подходят для форм, которые пользователь должен редактировать вручную перед печатью с произвольной структурой: для таких задач лучше подходит выгрузка в Word/Excel или отчёт на СКД с настраиваемыми вариантами. Также помните, что COM-заполнение шаблонов Word работает только на компьютерах с установленным MS Office и не работает на Linux-сервере.
Как выбрать подход
Часто задаваемые вопросы
Как вывести сумму прописью в макете?
В макете создайте параметр, например «СуммаПрописью», а в коде сформируйте строку функцией ЧислоПрописью(Сумма, , "рубль, рубля, рубля, м, копейка, копейки, копеек, ж, 2") и присвойте её параметру. Сам макет такую обработку не выполняет — вся логика в коде.
Можно ли изменить макет без конфигуратора?
Частично. В типовых конфигурациях на базе БСП пользователь может редактировать макеты печатных форм прямо в режиме предприятия (кнопка «Изменить макет» в форме печати или в справочнике пользовательских макетов). Изменённый макет сохраняется в базе и имеет приоритет над макетом из конфигурации.
Почему область выводится, но параметры пустые?
Чаще всего имена параметров в макете и в коде не совпадают с точностью до символа, либо заполнение выполняется после ТабДок.Вывести() — параметры нужно присваивать до вывода области. Также проверьте, что у ячейки в свойствах установлено «Заполнение: Параметр».
Как сделать область по столбцам, а не по строкам?
Выделите нужные столбцы по буквам колонок сверху и назначьте имя через «Таблица» → «Имена». Такие области выводятся методом Присоединить() вместо Вывести() — это используется для кросс-отчётов, где колонки формируются динамически.
Как скопировать макет из другой конфигурации?
Откройте оба конфигуратора, в исходном откройте макет, выделите всё (Ctrl+A), скопируйте и вставьте в новый макет целевой конфигурации. Имена областей и параметры при этом сохраняются, но код заполнения нужно переносить и адаптировать отдельно.
Что делать, если печатная форма не помещается на лист?
Настройте свойства табличного документа: масштаб, ориентацию страницы (книжная/альбомная), поля и автоподбор ширины. В коде можно задать ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт и ТабДок.АвтоМасштаб = Истина.
Что важно запомнить
Макет создаётся в конфигураторе: выбирается тип (чаще табличный документ), размечаются области и параметры, затем код заполняет их через ПолучитьМакет → ПолучитьОбласть → Параметры → Вывести. Имена областей и параметров в макете и коде должны совпадать точно. В типовых конфигурациях предпочтительны внешние печатные формы, а перед правкой регламентированных форм сохраняйте копию макета.