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