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

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

Как создать макет в 1С: пошаговое руководство

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

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

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

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

Где хранятся макеты и какой тип выбрать

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

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

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

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

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

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

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

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

Для выгрузок в CSV, XML-заготовки, служебные файлы. Без форматирования и оформления.

Создание макета в конфигураторе: пошагово

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

Дальше работа идёт как в обычной таблице: вносите статичный текст (заголовки, подписи), настраивайте ширину колонок, объединяйте ячейки, задавайте границы и шрифты через палитру свойств. Там, где должны подставляться данные из базы, вписывайте имя параметра в фигурных скобках: {НомерДокумента}, {Контрагент}, {СуммаВсего}. Если нужен текст с подстановкой внутри строки, используйте квадратные скобки: Счёт № [НомерДокумента] от [ДатаДокумента] — тогда в свойствах ячейки «Заполнение» должно стоять «Шаблон».

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

Области макета: зачем нужны и как их задать

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

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

Важно следить, чтобы параметры внутри области соответствовали её роли: в области «Строка» должны быть параметры одной позиции ({Номенклатура}, {Количество}, {Цена}), а итоговые параметры ({СуммаВсего}) — только в подвале. Если параметр области не заполнен из кода, в итоговом документе останется пустое место, а при включённой проверке заполнения — ошибка.

Вывод макета из кода: рабочий пример

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

bsl
Процедура ПечатьСчета(СсылкаНаДокумент) Экспорт
	ТабДок = Новый ТабличныйДокумент;
	Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетСчета");
	
	Шапка = Макет.ПолучитьОбласть("Шапка");
	Шапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
	Шапка.Параметры.Контрагент = СсылкаНаДокумент.Контрагент;
	ТабДок.Вывести(Шапка);
	
	Строка = Макет.ПолучитьОбласть("Строка");
	Для Каждого ТекСтрока Из СсылкаНаДокумент.Товары Цикл
		Строка.Параметры.Заполнить(ТекСтрока);
		ТабДок.Вывести(Строка);
	КонецЦикла;
	
	Подвал = Макет.ПолучитьОбласть("Подвал");
	Подвал.Параметры.СуммаВсего = СсылкаНаДокумент.Товары.Итог("Сумма");
	ТабДок.Вывести(Подвал);
КонецПроцедуры

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

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

Макет без конфигуратора: внешние печатные формы

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

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

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

Как выбрать способ

Конфигурация самописная или снята с поддержки, форма нужна постоянноСоздавайте макет в конфигураторе внутри объекта
Типовая конфигурация на поддержке, обновляется регулярноИспользуйте внешнюю печатную форму через дополнительные отчёты и обработки
Нужен отчёт с настройками для пользователяВыбирайте схему компоновки данных вместо табличного макета

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

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

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

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

Параметры в готовой форме
Норма

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

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

В документе видны {ИмяПараметра} — параметр не заполнен или имя не совпадает

Вывод области
Норма

Форма открывается без ошибок платформы

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

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

Длинные тексты
Норма

Строки переносятся, высота ячеек подстраивается

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

Текст обрезан или налезает на соседние строки

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

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

FAQ

Можно ли создать макет без конфигуратора, прямо в режиме 1С:Предприятие?

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

Чем параметр в {фигурных скобках} отличается от шаблона в [квадратных]?

Параметр в фигурных скобках занимает всю ячейку и заменяется значением целиком. Квадратные скобки работают внутри текстового шаблона: в ячейке может быть предложение, в которое подставляются несколько значений. Для шаблона в свойствах ячейки нужно установить «Заполнение» = «Шаблон».

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

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

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

Сформируйте табличный документ как обычно, затем вызовите метод Записать() с указанием пути и типа файла ТипФайлаТабличногоДокумента.PDF. Предварительно убедитесь, что заданы параметры страницы (ориентация, поля), иначе PDF может отличаться от экранного вида.

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

Вынесите макет в ветку «Общие» → «Общие макеты» и получайте его через ПолучитьОбщийМакет("ИмяМакета"). Код вывода тоже логично разместить в общем модуле, чтобы не дублировать его в каждом документе.

Можно ли в макете использовать формулы, как в Excel?

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

Итог

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

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