Свой отчёт без правки конфигурации: файл .erf или обработка с табличным документом

· 9 мин

Содержание

Чтобы внешняя обработка работала как отчёт, её делают внешним отчётом (файл .erf) на системе компоновки данных и подключают через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Второй путь — обычная обработка .epf с полем табличного документа и кнопкой «Сформировать», которая выводит результат запроса или схемы компоновки.

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

Как устроены внешние отчёты и чем они отличаются от обработок

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

ПризнакВнешний отчёт .erfВнешняя обработка .epf
ОсноваОсновная схема компоновки данныхФорма и модуль, всё пишется вручную
Кнопка «Сформировать», отборы, группировкиЕсть «из коробки»Только то, что вы сделали сами
Варианты и пользовательские настройкиСохраняются платформойНужно хранить самостоятельно
Вид при регистрации в БСП«Дополнительный отчет» или «Отчет»«Дополнительная обработка», «Печатная форма» и другие виды обработок
Где появится командаРаздел → «Дополнительные отчеты» или форма объектаРаздел → «Дополнительные обработки» или форма объекта
Когда выбиратьЛюбая аналитика, сводная таблица, остатки, оборотыОтчёт плюс действие: выгрузка, рассылка, правка данных по результату

Если задача — просто показать данные, берите внешний отчёт. Обработку «под отчёт» имеет смысл писать, когда после формирования нужно что-то сделать: записать документы, отправить файл, пометить строки.

💡 Типовые конфигурации на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА 2, ERP) различают отчёты и обработки уже при регистрации. Файл .epf нельзя зарегистрировать с видом «Дополнительный отчет»: программа проверит тип файла и предложит только виды обработок.

Создание внешнего отчёта: схема, настройки и форма

Делается в Конфигураторе той базы, для которой пишется отчёт. Так в запросе будут доступны её справочники, документы и регистры.

  1. Откройте Конфигуратор и выберите Файл → Новый…, тип «Внешний отчет ».
  2. Задайте имя латиницей или кириллицей без пробелов, например ПродажиПоМенеджерам, и синоним — его увидит пользователь.
  3. В окне объекта нажмите кнопку открытия основной схемы компоновки данных. Платформа предложит создать макет схемы — согласитесь.
  4. В схеме добавьте набор данных «Запрос» и откройте конструктор запроса. Выберите таблицы, поля и условия.
  5. На вкладке «Ресурсы» отметьте поля, которые нужно суммировать: сумму, количество.
  6. На вкладке «Параметры» проверьте параметры периода. Для виртуальных таблиц остатков и оборотов задайте понятные заголовки, например «Начало периода».
  7. На вкладке «Настройки» создайте структуру: группировку по менеджеру и детальные записи или таблицу с колонками по месяцам.
  8. Сохраните файл: Файл → Сохранить как…, расширение .erf.

Нужна ли своя форма отчёта

Чаще всего — нет. Если в свойствах отчёта форма не указана, платформа откроет форму по умолчанию из свойств конфигурации. В типовых на БСП это универсальная форма с вариантами, панелью настроек и кнопкой «Сформировать».

Свою форму создают, когда нужны нестандартные поля отбора, кнопки или подсказки. Тогда на форме размещают реквизит Отчет.КомпоновщикНастроек.Настройки и поле табличного документа для результата.

Быстрая проверка без регистрации

Запустите 1С:Предприятие, откройте главное меню и выберите Файл → Открыть. Укажите сохранённый .erf. Платформа покажет предупреждение безопасности о внешнем файле — подтвердите открытие, если файл ваш.

Отчёт откроется с кнопкой «Сформировать». Так удобно проверять запрос и группировки до того, как выдавать отчёт пользователям.

Обработка, которая формирует отчёт: пример кода

Когда к отчёту нужна логика, создают внешнюю обработку . На её форме размещают реквизиты отбора (период, организация), реквизит Результат типа ТабличныйДокумент с полем на форме и команду «Сформировать».

Схему компоновки удобно положить в макет обработки — тогда запрос по-прежнему настраивается конструктором. Добавьте макет типа «Схема компоновки данных» с именем СхемаОтчета и опишите в нём запрос с параметрами НачалоПериода и КонецПериода.

Код модуля формы:

&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()

	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	Схема = ОбработкаОбъект.ПолучитьМакет("СхемаОтчета");

	Настройки = Схема.НастройкиПоУмолчанию;
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", Объект.НачалоПериода);
	Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецДня(Объект.КонецПериода));

	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);

	Процессор = Новый ПроцессорКомпоновкиДанных;
	Процессор.Инициализировать(МакетКомпоновки);

	Результат.Очистить();
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(Результат);
	ПроцессорВывода.Вывести(Процессор);

КонецПроцедуры

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

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

Регистрация и размещение в разделах программы

Через Файл → Открыть файл открывает только тот, у кого есть право на открытие внешних файлов. Для обычной работы отчёт регистрируют в справочнике дополнительных отчётов и обработок. Для этого в модуле объекта нужна экспортная функция СведенияОВнешнейОбработке().

Функция регистрации в модуле объекта

Для внешнего отчёта, который будет открываться из раздела программы:

Функция СведенияОВнешнейОбработке() Экспорт

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.1.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Истина;

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Продажи по менеджерам";
	Команда.Идентификатор = "ПродажиПоМенеджерам";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Ложь;

	Возврат ПараметрыРегистрации;

КонецФункции

Для обработки из предыдущего раздела замените вид на ВидОбработкиДополнительнаяОбработка(). Строка "2.4.1.1" — минимальная версия БСП, с которой совместим файл; в актуальных типовых она заведомо ниже установленной.

Подключение в пользовательском режиме

  1. Откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Включите флажок «Дополнительные отчеты и обработки», если он снят, и перейдите по одноимённой ссылке.
  3. Нажмите «Добавить из файла…» и выберите .erf или .epf. Программа прочитает сведения о регистрации и заполнит карточку.
  4. На вкладке команд укажите размещение: отметьте разделы, где появится команда, например «Продажи» или «Руководителю».
  5. Через «Быстрый доступ» выберите пользователей, у которых команда будет на виду без поиска по списку.
  6. Проверьте поле «Публикация»: «Используется» — отчёт доступен всем, «Режим отладки» — только администраторам, «Отключена» — скрыт.
  7. Нажмите «Записать и закрыть».

После этого в выбранном разделе появится ссылка «Дополнительные отчеты». Пользователь открывает её и запускает отчёт из списка.

Назначаемый отчёт в форме документа

Вид «Отчет» (а для обработок — «Печатная форма», «Заполнение объекта») привязывают к объектам: в карточке появляется список назначения. Тогда команда видна прямо в форме, например, документа реализации, а в отчёт передаётся ссылка на текущий объект. Получить её можно через параметр команды, а не через выбор в отборе.

Права и безопасный режим

Доступ к внешним отчётам регулируют три вещи: роли, режим безопасности и защита от опасных действий.

  • 🔐 Права на регистрацию. Добавлять и обновлять файлы в справочнике может пользователь с ролью «Добавление и изменение дополнительных отчетов и обработок» или полными правами.
  • 📂 Права на Файл → Открыть. Для открытия файла с диска нужны права «Интерактивное открытие внешних отчетов» и «Интерактивное открытие внешних обработок». Без них платформа выдаёт Нарушение прав доступа!.
  • 🛡 Безопасный режим. При БезопасныйРежим = Истина код файла не может работать с файлами на диске, COM-объектами, внешними компонентами и привилегированным режимом. Для обычного отчёта на СКД этого хватает.
  • ⚠️ Защита от опасных действий. Начиная с платформы 8.3.9 пользователь видит предупреждение при открытии внешнего файла. Его отключают в карточке пользователя информационной базы, но лучше оставить: это защита от подложенных обработок.

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

В облачной 1С (1С:Фреш и сервисы на её основе) свои отчёты подключают только после проверки поставщиком сервиса. Код должен работать в безопасном режиме.

Ошибки запуска и отладка

Диагностика: выберите симптом

Как отлаживать

  • 🐞 Файловая база. Запустите 1С:Предприятие из Конфигуратора в режиме отладки, откройте .erf через Файл → Открыть, а сам файл — в Конфигураторе. Точки останова в модуле файла сработают.
  • 🖥 Клиент-серверная база. Отладка серверного кода требует, чтобы сервер был запущен с разрешённой отладкой (ключ -debug в параметрах службы агента сервера). Изменение параметров службы требует её перезапуска, а перезапуск обрывает сеансы всех пользователей — делайте это в нерабочее время или на копии базы.
  • 🔁 Зарегистрированный файл. Платформа выполняет копию из справочника, а не файл с диска. Отлаживайте на диске, а готовую версию загружайте в карточку командой обновления из файла и увеличивайте Версия в функции регистрации — так видно, какая редакция стоит в базе.

Скорость: что тормозит внешний отчёт

Медленный отчёт почти всегда медленный из-за запроса. Код вокруг схемы компоновки на скорость влияет мало.

Что видитеПричинаЧто поправить
Отчёт за месяц строится минутыОтбор наложен после выборки всех данныхПередавайте период и организацию в параметры виртуальной таблицы: Остатки(&КонецПериода, Организация = &Организация)
Время растёт с каждым полемРеквизиты через точку: Документ.Контрагент.ИННСоединяйте справочник явно или берите реквизиты из одной таблицы
Тормозит на больших регистрахУсловие по неиндексируемому полюОтбирайте по измерениям регистра, а не по реквизитам документов
Запрос из нескольких частей дублирует выборкиОдни и те же данные читаются несколько разСоберите основную выборку во временную таблицу и используйте её дальше
Пользователь ждёт с подвисшим окномОтчёт формируется синхронноИспользуйте универсальную форму БСП — она формирует отчёт в фоновом задании

Ещё два приёма:

  • 📉 Не включайте «Детальные записи» в вариант по умолчанию. Тысячи строк выводятся дольше, чем считаются итоги.
  • 🧮 Включите для полей схемы ограничение на использование в условиях и группировках там, где они не нужны. Пользователь не построит случайно отчёт по реквизиту без индекса.

Замер удобно делать инструментом «Замер производительности» в режиме отладки: он показывает строку кода, на которой уходит время. Если это строка КомпоновщикМакета.Выполнить или Процессор.Инициализировать, правьте запрос.

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

Можно ли переделать готовую внешнюю обработку в отчёт без переписывания?
Нет, тип файла не меняется. Создайте новый внешний отчёт и перенесите в него запрос и макеты — схему компоновки копируют через буфер обмена.
Будет ли внешний отчёт работать после обновления конфигурации?
Да, если в новом релизе остались объекты и реквизиты, на которые ссылается запрос. После крупных обновлений проверьте отчёт на копии базы.
Где хранится зарегистрированный отчёт?
В самой информационной базе, в справочнике дополнительных отчётов и обработок. Файл на диске после загрузки не нужен, но храните его для правок.
Можно ли выдать отчёт одному пользователю и скрыть от остальных?
Видимость команды настраивается через быстрый доступ и размещение. Полностью закрыть доступ можно публикацией «Режим отладки» — тогда отчёт видят только администраторы.
Подойдёт ли внешний отчёт из Бухгалтерии для УТ?
Только если в УТ есть те же объекты и реквизиты. Регистры и справочники конфигураций различаются, поэтому запрос обычно приходится адаптировать.