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