Разработка и Конфигурация · 12 мин
Как создать макет с помощью конструктора печати в 1С
Пошаговая инструкция по созданию макета печатной формы в 1С с помощью конструктора печати: запуск, настройка областей, полей и проверка результата.
Конструктор печати в 1С — это встроенный инструмент конфигуратора, который позволяет быстро создать макет печатной формы для документа или справочника без ручного рисования областей и написания всего кода вывода. Он автоматически формирует макет с шапкой, табличной частью и подвалом, а также генерирует процедуру печати в модуле объекта или менеджера объекта.
Инструмент особенно полезен начинающим разработчикам: вместо того чтобы вручную размечать секции табличного документа и прописывать параметры, вы отвечаете на вопросы мастера — какие реквизиты выводить, в каком порядке, нужна ли группировка. На выходе получается готовый работающий каркас, который затем дорабатывается под требования организации.
Ниже разобран полный цикл работы: от подготовки конфигурации и запуска конструктора до проверки сформированной печатной формы и исправления типичных ошибок. Материал ориентирован на типовой сценарий — создание печатной формы документа в конфигураторе 1С:Предприятие 8.
Что такое конструктор печати и когда его использовать
Конструктор печати — это мастер, встроенный в конфигуратор 1С:Предприятие 8. Он создаёт два связанных результата: макет табличного документа с именованными областями (шапка, строка табличной части, подвал) и программный код процедуры печати, который заполняет параметры макета данными объекта и выводит секции в итоговый табличный документ.
Инструмент оправдан, когда нужна стандартная печатная форма: список реквизитов объекта, таблица товаров или услуг, итоговые суммы, подписи. Для сложных форм — со вложенными таблицами, произвольной графикой, штрихкодами, нестандартной компоновкой страниц — конструктор создаёт только основу, которую придётся существенно дорабатывать вручную.
Важно понимать ограничение: конструктор работает только в конфигураторе и требует права на изменение конфигурации. Если конфигурация находится на поддержке без возможности изменения, сначала потребуется включить возможность изменений либо использовать альтернативу — внешнюю печатную форму.
Подготовка: что проверить перед запуском
Перед запуском конструктора убедитесь, что у объекта, для которого создаётся форма, заполнены реквизиты и табличные части — конструктор строит макет именно на их основе. Если реквизит ещё не добавлен в метаданные, в макет он не попадёт, и мастер придётся проходить заново.
Проверьте права доступа: нужна роль с правом изменения конфигурации и право обновления конфигурации базы данных. Работать лучше в копии базы или в тестовом контуре, чтобы ошибочные изменения не попали пользователям до проверки.
Также заранее решите, где будет размещаться код печати: в модуле менеджера объекта (рекомендуемый вариант для управляемых форм) или в модуле самого объекта. От этого зависит, как процедура будет вызываться из команд печати.
Запуск конструктора печати
Откройте конфигуратор и найдите в дереве конфигурации нужный объект, например документ «РеализацияТоваровУслуг». Раскройте ветку объекта — внутри находятся узлы «Макеты», «Формы», «Команды» и другие.
Есть два способа запустить мастер. Первый: правой кнопкой по узлу «Макеты» → «Добавить», затем в диалоге создания макета выбрать тип «Табличный документ» и нажать кнопку «Конструкторы» → «Конструктор печати». Второй: открыть форму редактирования объекта, перейти на закладку «Макеты» и нажать кнопку «Конструктор печати» внизу окна.
- 1Откройте конфигуратор и найдите объект в дереве конфигурации
- 2Раскройте объект, нажмите правой кнопкой на «Макеты» → «Добавить»
- 3Выберите тип макета «Табличный документ» и запустите конструктор печати
- 4Пройдите шаги мастера: шапка, табличная часть, подвал
- 5Согласитесь на создание процедуры печати и завершите работу мастера
После запуска откроется диалог мастера. На первом шаге укажите имя процедуры печати (по умолчанию предлагается «Печать») и выберите, куда поместить код — в модуль менеджера или модуль объекта. Для управляемого приложения выбирайте модуль менеджера.
Настройка шапки, табличной части и подвала
На шаге «Шапка» мастер показывает список всех реквизитов объекта. Перенесите в правую часть те, что должны попасть в верхнюю часть формы: номер, дату, организацию, контрагента, договор. Порядок реквизитов в списке определяет порядок строк в макете — используйте кнопки перемещения вверх и вниз.
На шаге табличной части выберите саму табличную часть (если их несколько) и её реквизиты: номенклатуру, количество, цену, сумму. Конструктор создаст область «Строка» с параметрами для каждого выбранного поля и область «ШапкаТаблицы» с заголовками колонок.
На шаге «Подвал» отметьте реквизиты для нижней части: сумму документа, сумму прописью (если реализована в конфигурации), ответственного, поля для подписей. Если нужных реквизитов нет в объекте — например, «ИтогоНДС» вычисляется на лету, — их придётся добавить в макет и код вручную после работы мастера.
Что конструктор создаёт автоматически
По завершении мастера в конфигурации появляются два объекта. Первый — макет с выбранным именем: табличный документ, разбитый на именованные области «Шапка», «ШапкаТаблицы», «Строка» и «Подвал». В ячейках расположены статичные подписи и параметры в квадратных скобках, например [Номер] или [Номенклатура].
Второй результат — процедура печати в выбранном модуле. Она получает макет, заполняет параметры шапки из реквизитов объекта, в цикле обходит табличную часть и выводит область «Строка» для каждой записи, затем выводит подвал и возвращает сформированный табличный документ.
Типовой фрагмент сгенерированного кода выглядит примерно так:
Макет = ПолучитьМакет("МакетПечати");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Номер = Ссылка.Номер;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТЧ Из Ссылка.Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Этот код — рабочая основа, но не финал. Обычно требуется добавить форматирование чисел и дат, вывод итогов, обработку пустых значений и проверку разрыва страниц через ТабДок.ПроверитьВывод(), чтобы строки не обрывались некрасиво.
Подключение формы к команде печати
Созданный макет и процедура сами по себе не появятся в интерфейсе. В типовых конфигурациях на БСП (Библиотека стандартных подсистем) печатные формы регистрируются в процедуре ДобавитьКомандыПечати модуля менеджера объекта: указывается идентификатор макета, представление кнопки и порядок в списке.
В самописной конфигурации без БСП проще всего создать команду объекта, в обработчике которой вызвать процедуру печати и показать результат через ТабДок.Показать() или открыть стандартный диалог печати. Команду затем добавляют в командную панель формы документа.
Где размещать код печати
Рекомендуемый вариант для управляемых форм и БСП: процедура доступна серверу, легко регистрируется в подсистеме печати. Ограничение — требует аккуратной работы со ссылками, нет доступа к данным формы.
Подходит для простых самописных конфигураций и обычных форм: прямой доступ к данным объекта. Ограничение — в управляемом приложении вызов сложнее, код хуже сочетается с типовой подсистемой печати.
Единственный вариант, если конфигурация на поддержке без изменений. Ограничение — макет и код живут в отдельном файле, обновления конфигурации могут потребовать его доработки.
Проверка результата и типичные ошибки
После обновления конфигурации базы данных запустите режим предприятия, откройте заполненный документ и выполните команду печати. Проверьте: все ли параметры заполнены данными, корректно ли выводятся строки табличной части, не обрезается ли текст, правильно ли переносятся страницы на предпросмотре.
Типичный признак проблемы — вместо значений в форме выводятся имена параметров в квадратных скобках или пустые ячейки. Это значит, что параметр в макете назван иначе, чем в коде, либо ему вообще не присваивается значение. Имена параметров чувствительны к регистру и должны совпадать символ в символ.
Как проверить результат
Все поля формы содержат данные документа
Пустые ячейки или текст в квадратных скобках
Количество строк совпадает с документом, итоги сходятся
Строки дублируются, пропущены или суммы не совпадают
Строки не обрываются, подвал на последней странице
Половина строки на одной странице, половина на другой
Кнопка печати открывает предпросмотр без ошибок
Ошибка «Процедура не обнаружена» или пустой документ
Ограничения конструктора и альтернативы
Конструктор печати не умеет создавать формы со сложной структурой: многоуровневые группировки, вложенные таблицы, объединённые ячейки нестандартной формы, штрихкоды и графические элементы он не добавит. Всё это рисуется вручную в редакторе макета после генерации основы.
Альтернативы стоит рассмотреть в трёх случаях. Если конфигурация на поддержке без возможности изменения — используйте механизм внешних печатных форм. Если форма должна редактироваться пользователями без конфигуратора — подойдут макеты офисных документов (DOCX) в БСП. Если нужна сложная аналитическая форма — иногда проще построить отчёт на СКД и вывести его как печатный бланк.
Как выбрать подход
Что важно запомнить
Конструктор печати создаёт макет и процедуру печати за несколько минут: запустите его из узла «Макеты» объекта, выберите реквизиты шапки, табличной части и подвала, разместите код в модуле менеджера. Затем зарегистрируйте команду печати, обновите конфигурацию базы данных в безопасное время и проверьте форму на реальном документе, уделив внимание именам параметров и разбивке страниц.
Частые вопросы
Можно ли запустить конструктор печати повторно для того же макета?
Да, но мастер перезапишет макет и процедуру, удалив все ручные доработки. Если форма уже изменялась вручную, лучше скопировать её под новым именем перед повторным запуском или добавить недостающие поля вручную в существующий макет.
Почему в печатной форме выводится текст вида [Параметр] вместо значения?
Имя параметра в макете не совпадает с именем, которому присваивается значение в коде, либо присваивание вообще не выполняется. Откройте свойства ячейки макета, проверьте поле «Параметр» и сравните его с кодом процедуры печати — имена должны совпадать полностью.
Где лучше размещать процедуру печати — в модуле объекта или менеджера?
Для управляемых форм и конфигураций на БСП — в модуле менеджера: именно оттуда типовая подсистема печати вызывает процедуры. Модуль объекта подходит для простых самописных решений на обычных формах, где прямой доступ к данным объекта важнее совместимости с подсистемой печати.
Как добавить в форму итоговую сумму, если такого реквизита нет?
Создайте в области подвала ячейку с параметром, например [ИтогоСумма], а в коде после цикла по табличной части вычислите значение (например, суммой по колонке «Сумма») и присвойте его параметру перед выводом подвала. Конструктор такие вычисляемые поля не создаёт автоматически.
Можно ли создать печатную форму без изменения конфигурации?
Да, через механизм внешних печатных форм: макет и код упаковываются в отдельный файл-обработку, который подключается к базе через справочник дополнительных отчетов и обработок. Это стандартный способ для конфигураций, находящихся на полной поддержке.
Что делать, если строки формы некрасиво разрываются при печати?
Используйте метод ПроверитьВывод() табличного документа: перед выводом очередной строки проверьте, помещается ли она вместе с подвалом на текущей странице, и при необходимости выведите горизонтальный разделитель страниц. Дополнительно настройте в макете свойства «Высота строки» и «Защита» для областей.