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

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

Внешние печатные формы в 1С: подключение, создание и настройка

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

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

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

Механизм работает в конфигурациях, построенных на Библиотеке стандартных подсистем (БСП): Управление торговлей, Бухгалтерия предприятия, ERP, Зарплата и управление персоналом и других. В самописных и старых конфигурациях без БСП подключение через стандартный механизм может быть недоступно — тогда обработку открывают вручную через «Файл → Открыть».

Когда нужна внешняя печатная форма, а когда нет

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

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

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

Как выбрать подход

Нужно изменить логотип или реквизиты в типовой формеПроверьте штатные настройки организации и макета — внешняя форма не нужна
Нужен принципиально другой макет или новые данные в формеСоздавайте внешнюю печатную форму
Макет правится часто самими пользователямиИспользуйте редактируемые макеты БСП вместо жёсткого макета в обработке
Конфигурация без БСПИспользуйте открытие обработки через Файл → Открыть или доработку конфигурации

Требования к обработке: что должно быть внутри

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

Второй обязательный элемент — экспортная процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода). Именно её вызывает программа, когда пользователь нажимает кнопку печати. Внутри процедуры формируется табличный документ по макету и передаётся в коллекцию печатных форм через стандартные процедуры БСП.

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

Подключение внешней печатной формы: пошагово

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

Порядок подключения
  1. 1
    Откройте Администрирование → Печатные формы, отчеты и обработки и включите «Дополнительные отчеты и обработки»
  2. 2
    Перейдите в справочник «Дополнительные отчеты и обработки» и нажмите «Добавить из файла»
  3. 3
    Выберите файл .epf с печатной формой
  4. 4
    Проверьте автоматически заполненные поля: наименование, назначение (список документов), команды
  5. 5
    При необходимости ограничьте доступ по пользователям на закладке «Быстрый доступ»
  6. 6
    Запишите элемент, откройте документ из назначения и проверьте появление кнопки в меню «Печать»

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

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

Создание макета и кода печати

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

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

Готовый табличный документ помещается в коллекцию печатных форм. В конфигурациях на свежих версиях БСП используется процедура УправлениеПечатью.СведенияОПечатнойФорме() и УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(). Также не забудьте заполнить ОбъектыПечати — без этого в форме не будет работать переход к печатаемому объекту.

Проверяйте печать сразу на пакете из нескольких документов, а не на одном. Классическая ошибка — форма корректно печатает один документ, а при выборе нескольких выводит данные только первого или склеивает области. Причина обычно в том, что табличный документ не очищается внутри цикла по объектам.
ПЗ
Практическое замечание

Проверка результата

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

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

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

Кнопка в меню «Печать» документа
Норма

Новая команда видна с заданным названием

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

Команды нет — проверьте назначение обработки и быстрый доступ пользователя

Данные в форме
Норма

Все поля заполнены, суммы и номера соответствуют документу

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

Пустые параметры или данные чужого документа — ошибка в запросе

Пакетная печать
Норма

Каждый документ на своей странице, без склейки

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

Формы слипаются или дублируются — нет очистки табличного документа в цикле

Предпросмотр и бумага
Норма

Поля и разрывы страниц корректны при реальной печати

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

Обрезаются колонки — настройте масштаб и поля в макете

Типичные ошибки и ограничения

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

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

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

Итог

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

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

Частые вопросы

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

Проверьте закладку «Быстрый доступ» в карточке дополнительной обработки: если там задан список пользователей, команда видна только им. Также у пользователя должны быть права на сам документ и на использование дополнительных отчетов и обработок.

Можно ли подключить одну форму к нескольким видам документов?

Да. В параметре «Назначение» функции СведенияОВнешнейОбработке перечисляется массив объектов, например несколько видов документов. Команда появится в каждом из них, а в коде печати следует учитывать различия в структуре данных этих документов.

Пропадёт ли внешняя форма после обновления конфигурации?

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

Чем внешняя печатная форма отличается от расширения конфигурации?

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

Можно ли редактировать макет без конфигуратора?

Макет, встроенный в файл .epf, правится только в конфигураторе. Если нужна правка макета пользователем, используйте механизм редактируемых макетов БСП, где макет хранится в базе и открывается из пользовательского режима, если конфигурация это поддерживает.