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