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

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

Как в 1С сделать макет: полная инструкция

Разбираем, как создать макет в 1С: типы макетов, работа с табличным документом, области, параметры и заполнение. Пошаговая инструкция с примерами кода.

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

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

Какие типы макетов существуют и что выбрать

При добавлении макета конфигуратор предлагает несколько типов, и выбор зависит от задачи. Самый распространённый — Табличный документ: он подходит для печатных форм документов, актов, счетов и любых форм с фиксированной вёрсткой. Тип Схема компоновки данных используется для отчётов на СКД, где структуру данных формирует запрос, а не ручная разметка. Тип Двоичные данные и ActiveDocument применяют для хранения готовых файлов — например, шаблона Word или Excel, который заполняется через COM-объекты.

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

Сравнение типов макетов

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

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

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

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

Двоичные данные (Word/Excel)

Когда бухгалтерия требует форму точно как в привычном файле. Требует MS Office на компьютере и работы через COM.

Где создавать макет: объект или общие макеты

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

Второй вариант — ветка «Общие» → «Общие макеты». Сюда выносят шаблоны, которые используются в нескольких местах: общий подвал с подписями, типовая шапка с логотипом, формы, вызываемые из разных документов. Общий макет доступен через ПолучитьОбщийМакет("ИмяМакета"). Правило простое: один объект — макет внутри объекта, несколько потребителей — общий макет.

После нажатия «Добавить» откроется конструктор макета. Укажите имя (латиницей, без пробелов — оно будет использоваться в коде), выберите тип «Табличный документ» и при необходимости воспользуйтесь конструктором печати, который автоматически сформирует шапку, строку табличной части и подвал по реквизитам объекта.

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

Разметка областей и параметров в редакторе

Редактор табличного документа внешне похож на Excel: ячейки, объединения, границы, шрифты. Ключевое понятие — область: именованный фрагмент макета, который выводится в итоговый документ отдельной командой. Чтобы создать область, выделите нужные строки (по номерам строк слева), затем меню «Таблица» → «Имена» → «Назначить имя» и введите имя, например «Шапка», «СтрокаТовары», «Подвал». Стандартная структура печатной формы: шапка с реквизитами документа, повторяемая строка табличной части, подвал с итогами и подписями.

Ячейки бывают трёх видов, и это критично для заполнения. Обычный текст выводится как есть. Параметр — место подстановки данных: введите в ячейку имя в квадратных скобках, например [НомерДокумента], либо откройте свойства ячейки и установите «Заполнение» = «Параметр», а в поле «Текст» — имя параметра без скобок. Шаблон — сочетание текста и параметров в одной ячейке: выберите «Заполнение» = «Шаблон» и пишите текст с параметрами в квадратных скобках, например Счёт № [Номер] от [Дата].

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

Программное заполнение макета данными

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

Метод Параметры.Заполнить(Стр) удобен тем, что автоматически подставляет значения, имена которых совпадают с именами параметров. Но он заполняет только совпадающие параметры — остальные останутся пустыми. Для вычисляемых значений (сумма прописью, итоги, форматированные даты) присваивайте параметры явно. Если макет общий, первая строка меняется на Макет = ПолучитьОбщийМакет("ИмяМакета").

Готовый табличный документ нужно вернуть пользователю: в управляемых формах его помещают в реквизит формы типа «ТабличныйДокумент» или показывают через ТабДок.Показать() (в толстом клиенте), а в типовых механизмах печати (БСП) — передают в коллекцию печатных форм процедуры ДобавитьКомандуПечати / функции формирования.

bsl
Макет = ПолучитьОбщийМакет("МакетАкта");
Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.НомерАкта = "17";
ТабДок.Вывести(Область);

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

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

Типичные ошибки
01
Ошибка «Область не найдена» — имя области в коде не совпадает с именем в макете или область создана по столбцам, а не по строкам
02
Пустые поля на печати — параметр назван в макете иначе, чем в коде, либо ячейке не установлено заполнение «Параметр»
03
Квадратные скобки [Параметр] видны в распечатке — ячейка осталась с заполнением «Текст»
04
Съехавшая вёрстка при длинном тексте — у ячейки не включено свойство «Автовысота» / размещение текста
05
Макет изменили, а форма старая — макет отредактирован в одной конфигурации, а пользователь работает в необновлённой базе
Контрольные точки

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

Имена областей
Норма

ПолучитьОбласть() отрабатывает без исключения

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

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

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

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

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

Пустые ячейки или текст в квадратных скобках

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

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

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

Таблица обрывается, подвал уезжает на середину страницы

Ограничения и когда макет лучше не трогать

Изменение макета типовой конфигурации — это доработка, которая усложняет обновление: при каждом апдейте конфигуратор будет сравнивать ваш макет с макетом поставщика. Если конфигурация на поддержке, безопаснее использовать внешние печатные формы (механизм «Дополнительные отчеты и обработки» в БСП) — макет хранится внутри внешней обработки и не затрагивает типовую конфигурацию вообще.

Ещё одно ограничение — макеты типа «Табличный документ» не подходят для форм, которые пользователь должен редактировать вручную перед печатью с произвольной структурой: для таких задач лучше подходит выгрузка в Word/Excel или отчёт на СКД с настраиваемыми вариантами. Также помните, что COM-заполнение шаблонов Word работает только на компьютерах с установленным MS Office и не работает на Linux-сервере.

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

Как выбрать подход

Печатная форма одного документа, конфигурация самописнаяМакет табличного документа внутри объекта
Типовая конфигурация на поддержке, нужна своя формаВнешняя печатная форма через «Дополнительные отчеты и обработки»
Нужен отчёт с отборами и группировкамиМакет типа «Схема компоновки данных» и отчёт на СКД
Форма должна редактироваться пользователем в WordМакет «Двоичные данные» с шаблоном .docx и заполнение через COM

Часто задаваемые вопросы

Как вывести сумму прописью в макете?

В макете создайте параметр, например «СуммаПрописью», а в коде сформируйте строку функцией ЧислоПрописью(Сумма, , "рубль, рубля, рубля, м, копейка, копейки, копеек, ж, 2") и присвойте её параметру. Сам макет такую обработку не выполняет — вся логика в коде.

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

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

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

Чаще всего имена параметров в макете и в коде не совпадают с точностью до символа, либо заполнение выполняется после ТабДок.Вывести() — параметры нужно присваивать до вывода области. Также проверьте, что у ячейки в свойствах установлено «Заполнение: Параметр».

Как сделать область по столбцам, а не по строкам?

Выделите нужные столбцы по буквам колонок сверху и назначьте имя через «Таблица» → «Имена». Такие области выводятся методом Присоединить() вместо Вывести() — это используется для кросс-отчётов, где колонки формируются динамически.

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

Откройте оба конфигуратора, в исходном откройте макет, выделите всё (Ctrl+A), скопируйте и вставьте в новый макет целевой конфигурации. Имена областей и параметры при этом сохраняются, но код заполнения нужно переносить и адаптировать отдельно.

Что делать, если печатная форма не помещается на лист?

Настройте свойства табличного документа: масштаб, ориентацию страницы (книжная/альбомная), поля и автоподбор ширины. В коде можно задать ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт и ТабДок.АвтоМасштаб = Истина.

Итог

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

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