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

Документы и Печать · 10 мин

Как добавить макет печатной формы в 1С

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

Печатная форма в 1С формируется на основе макета — шаблона, где размечены области, параметры и оформление будущего документа. Чаще всего используется табличный макет, похожий на лист Excel: в ячейках размещают статичный текст, параметры вида [НомерДокумента] и шаблоны с вычисляемыми выражениями. Добавить новый макет можно двумя путями: через конфигуратор, если вы дорабатываете конфигурацию, или через механизм внешних печатных форм, если конфигурация на поддержке и менять её нельзя.

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

Определите, какой способ добавления макета вам подходит

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

Если конфигурация самописная, уже доработана или изменения в ней допустимы, добавляйте макет напрямую в конфигураторе. Этот вариант проще в сопровождении: макет хранится внутри конфигурации, не зависит от файлов на диске и доступен всем пользователям после обновления базы.

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

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

Конфигурация типовая и стоит на полной поддержкеСоздавайте внешнюю печатную форму и подключайте через «Дополнительные отчеты и обработки»
Конфигурация снята с поддержки или самописнаяДобавляйте макет в конфигураторе в ветку «Макеты» объекта
Форма нужна только нескольким пользователям и часто меняетсяВнешняя печатная форма: её файл можно заменить без обновления конфигурации

Добавление макета в конфигураторе

Откройте конфигуратор и в дереве конфигурации найдите объект, для которого создаётся печатная форма, — например, документ «РеализацияТоваровУслуг». Раскройте объект, щёлкните правой кнопкой по ветке «Макеты» и выберите «Добавить». Запустится конструктор макета: укажите имя (например, «МакетСчета»), тип макета — «Табличный документ», и подтвердите создание.

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

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

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

Макет делится на именованные области, которые программа выводит по отдельности. Выделите строки шапки, затем через меню «Таблица — Имена — Назначить имя» задайте имя области, например «Шапка». Аналогично создайте области «Строка» для табличной части и «Подвал» для итогов и подписей. Горизонтальные области выводятся методом Вывести(), при необходимости присоединяйте вертикальные области методом Присоединить().

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

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

Программный вывод макета в печатную форму

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

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

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

Добавление макета через внешнюю печатную форму

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

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

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

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

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

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

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

Номер, дата, контрагент и суммы на месте

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

Пустые ячейки — имя параметра в макете не совпадает с кодом

Разбиение на страницы
Норма

Каждый документ начинается с нового листа

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

Документы слипаются — нет разделителя страниц

Табличная часть
Норма

Выводятся все строки с итогами

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

Строки пропущены — цикл вывода области не отработал

Типичные ошибки
01
Опечатка в имени макета в ПолучитьМакет() — ошибка «Макет не найден» при печати
02
Параметр объявлен в макете, но не заполнен в коде — пустая ячейка без сообщения об ошибке
03
Изменение типового макета в конфигурации на поддержке — правки теряются при обновлении
04
Забыт разделитель страниц — несколько документов печатаются на одном листе
05
Не назначена область строки табличной части — выводится только шапка без товаров

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

Можно ли изменить печатную форму без программирования?

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

Почему изменения в макете не видны пользователям?

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

Чем табличный макет отличается от макета HTML или географической схемы?

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

Как добавить логотип или печать организации в макет?

Вставьте картинку в макет через «Таблица — Рисунки — Вставить» или добавьте рисунок в ячейку с типом «Картинка». Для подстановки разных изображений из базы используйте параметр-картинку: в коде присвойте параметру значение типа Картинка, полученное из хранилища значений элемента справочника.

Что делать, если при печати появляется ошибка «Поле объекта не обнаружено»?

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

Можно ли использовать один макет для нескольких видов документов?

Да, если структура данных совпадает. Создайте общий макет в ветке «Общие — Общие макеты» и обращайтесь к нему через ПолучитьОбщийМакет(). В коде вывода учитывайте различия в именах реквизитов документов — иначе часть параметров останется незаполненной.

Итог

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

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