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