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