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