Свой отчёт без правки конфигурации: файл .erf или обработка с табличным документом
Содержание
Чтобы внешняя обработка работала как отчёт, её делают внешним отчётом (файл .erf) на системе компоновки данных и подключают через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Второй путь — обычная обработка .epf с полем табличного документа и кнопкой «Сформировать», которая выводит результат запроса или схемы компоновки.
Оба варианта не требуют снимать конфигурацию с поддержки. Разница в том, где пользователь увидит команду, будут ли у него варианты и пользовательские настройки и сколько кода придётся писать руками.
Как устроены внешние отчёты и чем они отличаются от обработок
Платформа 1С:Предприятие 8.3 знает два вида внешних файлов. Они создаются в Конфигураторе и живут вне структуры базы, поэтому их можно менять без обновления конфигурации.
| Признак | Внешний отчёт .erf | Внешняя обработка .epf |
|---|---|---|
| Основа | Основная схема компоновки данных | Форма и модуль, всё пишется вручную |
| Кнопка «Сформировать», отборы, группировки | Есть «из коробки» | Только то, что вы сделали сами |
| Варианты и пользовательские настройки | Сохраняются платформой | Нужно хранить самостоятельно |
| Вид при регистрации в БСП | «Дополнительный отчет» или «Отчет» | «Дополнительная обработка», «Печатная форма» и другие виды обработок |
| Где появится команда | Раздел → «Дополнительные отчеты» или форма объекта | Раздел → «Дополнительные обработки» или форма объекта |
| Когда выбирать | Любая аналитика, сводная таблица, остатки, обороты | Отчёт плюс действие: выгрузка, рассылка, правка данных по результату |
Если задача — просто показать данные, берите внешний отчёт. Обработку «под отчёт» имеет смысл писать, когда после формирования нужно что-то сделать: записать документы, отправить файл, пометить строки.
💡 Типовые конфигурации на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА 2, ERP) различают отчёты и обработки уже при регистрации. Файл .epf нельзя зарегистрировать с видом «Дополнительный отчет»: программа проверит тип файла и предложит только виды обработок.
Создание внешнего отчёта: схема, настройки и форма
Делается в Конфигураторе той базы, для которой пишется отчёт. Так в запросе будут доступны её справочники, документы и регистры.
- Откройте Конфигуратор и выберите
Файл → Новый…, тип «Внешний отчет ». - Задайте имя латиницей или кириллицей без пробелов, например
ПродажиПоМенеджерам, и синоним — его увидит пользователь. - В окне объекта нажмите кнопку открытия основной схемы компоновки данных. Платформа предложит создать макет схемы — согласитесь.
- В схеме добавьте набор данных «Запрос» и откройте конструктор запроса. Выберите таблицы, поля и условия.
- На вкладке «Ресурсы» отметьте поля, которые нужно суммировать: сумму, количество.
- На вкладке «Параметры» проверьте параметры периода. Для виртуальных таблиц остатков и оборотов задайте понятные заголовки, например «Начало периода».
- На вкладке «Настройки» создайте структуру: группировку по менеджеру и детальные записи или таблицу с колонками по месяцам.
- Сохраните файл:
Файл → Сохранить как…, расширение.erf.
Нужна ли своя форма отчёта
Чаще всего — нет. Если в свойствах отчёта форма не указана, платформа откроет форму по умолчанию из свойств конфигурации. В типовых на БСП это универсальная форма с вариантами, панелью настроек и кнопкой «Сформировать».
Свою форму создают, когда нужны нестандартные поля отбора, кнопки или подсказки. Тогда на форме размещают реквизит Отчет.КомпоновщикНастроек.Настройки и поле табличного документа для результата.
Быстрая проверка без регистрации
Запустите 1С:Предприятие, откройте главное меню и выберите Файл → Открыть. Укажите сохранённый .erf. Платформа покажет предупреждение безопасности о внешнем файле — подтвердите открытие, если файл ваш.
Отчёт откроется с кнопкой «Сформировать». Так удобно проверять запрос и группировки до того, как выдавать отчёт пользователям.
Обработка, которая формирует отчёт: пример кода
Когда к отчёту нужна логика, создают внешнюю обработку
. На её форме размещают реквизиты отбора (период, организация), реквизит Результат типа ТабличныйДокумент с полем на форме и команду «Сформировать».
Схему компоновки удобно положить в макет обработки — тогда запрос по-прежнему настраивается конструктором. Добавьте макет типа «Схема компоновки данных» с именем СхемаОтчета и опишите в нём запрос с параметрами НачалоПериода и КонецПериода.
Код модуля формы:
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СформироватьНаСервере()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Схема = ОбработкаОбъект.ПолучитьМакет("СхемаОтчета");
Настройки = Схема.НастройкиПоУмолчанию;
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", Объект.НачалоПериода);
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецДня(Объект.КонецПериода));
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(МакетКомпоновки);
Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(Процессор);
КонецПроцедуры
НачалоПериода и КонецПериода здесь — реквизиты самой обработки, выведенные на форму. Схема компонуется на сервере, а в клиент уходит только готовый табличный документ.
Такая обработка не сохраняет пользовательские настройки сама. Если пользователю нужно менять группировки и отборы, а не только период, — это аргумент в пользу внешнего отчёта .erf.
Регистрация и размещение в разделах программы
Через Файл → Открыть файл открывает только тот, у кого есть право на открытие внешних файлов. Для обычной работы отчёт регистрируют в справочнике дополнительных отчётов и обработок. Для этого в модуле объекта нужна экспортная функция СведенияОВнешнейОбработке().
Функция регистрации в модуле объекта
Для внешнего отчёта, который будет открываться из раздела программы:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.1.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Продажи по менеджерам";
Команда.Идентификатор = "ПродажиПоМенеджерам";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Для обработки из предыдущего раздела замените вид на ВидОбработкиДополнительнаяОбработка(). Строка "2.4.1.1" — минимальная версия БСП, с которой совместим файл; в актуальных типовых она заведомо ниже установленной.
Подключение в пользовательском режиме
- Откройте
Администрирование → Печатные формы, отчеты и обработки. - Включите флажок «Дополнительные отчеты и обработки», если он снят, и перейдите по одноимённой ссылке.
- Нажмите «Добавить из файла…» и выберите
.erfили.epf. Программа прочитает сведения о регистрации и заполнит карточку. - На вкладке команд укажите размещение: отметьте разделы, где появится команда, например «Продажи» или «Руководителю».
- Через «Быстрый доступ» выберите пользователей, у которых команда будет на виду без поиска по списку.
- Проверьте поле «Публикация»: «Используется» — отчёт доступен всем, «Режим отладки» — только администраторам, «Отключена» — скрыт.
- Нажмите «Записать и закрыть».
После этого в выбранном разделе появится ссылка «Дополнительные отчеты». Пользователь открывает её и запускает отчёт из списка.
Назначаемый отчёт в форме документа
Вид «Отчет» (а для обработок — «Печатная форма», «Заполнение объекта») привязывают к объектам: в карточке появляется список назначения. Тогда команда видна прямо в форме, например, документа реализации, а в отчёт передаётся ссылка на текущий объект. Получить её можно через параметр команды, а не через выбор в отборе.
Права и безопасный режим
Доступ к внешним отчётам регулируют три вещи: роли, режим безопасности и защита от опасных действий.
- 🔐 Права на регистрацию. Добавлять и обновлять файлы в справочнике может пользователь с ролью «Добавление и изменение дополнительных отчетов и обработок» или полными правами.
- 📂 Права на
Файл → Открыть. Для открытия файла с диска нужны права «Интерактивное открытие внешних отчетов» и «Интерактивное открытие внешних обработок». Без них платформа выдаётНарушение прав доступа!. - 🛡 Безопасный режим. При
БезопасныйРежим = Истинакод файла не может работать с файлами на диске, COM-объектами, внешними компонентами и привилегированным режимом. Для обычного отчёта на СКД этого хватает. - ⚠️ Защита от опасных действий. Начиная с платформы 8.3.9 пользователь видит предупреждение при открытии внешнего файла. Его отключают в карточке пользователя информационной базы, но лучше оставить: это защита от подложенных обработок.
Если отчёту правда нужен небезопасный режим (например, он пишет файл в сетевую папку), в карточке регистрации это видно, и решение принимает администратор. Не подключайте с отключённым безопасным режимом файлы, исходный код которых вы не читали — такая обработка получает те же возможности, что и код типовой конфигурации.
В облачной 1С (1С:Фреш и сервисы на её основе) свои отчёты подключают только после проверки поставщиком сервиса. Код должен работать в безопасном режиме.
Ошибки запуска и отладка
Как отлаживать
- 🐞 Файловая база. Запустите 1С:Предприятие из Конфигуратора в режиме отладки, откройте
.erfчерезФайл → Открыть, а сам файл — в Конфигураторе. Точки останова в модуле файла сработают. - 🖥 Клиент-серверная база. Отладка серверного кода требует, чтобы сервер был запущен с разрешённой отладкой (ключ
-debugв параметрах службы агента сервера). Изменение параметров службы требует её перезапуска, а перезапуск обрывает сеансы всех пользователей — делайте это в нерабочее время или на копии базы. - 🔁 Зарегистрированный файл. Платформа выполняет копию из справочника, а не файл с диска. Отлаживайте на диске, а готовую версию загружайте в карточку командой обновления из файла и увеличивайте
Версияв функции регистрации — так видно, какая редакция стоит в базе.
Скорость: что тормозит внешний отчёт
Медленный отчёт почти всегда медленный из-за запроса. Код вокруг схемы компоновки на скорость влияет мало.
| Что видите | Причина | Что поправить |
|---|---|---|
| Отчёт за месяц строится минуты | Отбор наложен после выборки всех данных | Передавайте период и организацию в параметры виртуальной таблицы: Остатки(&КонецПериода, Организация = &Организация) |
| Время растёт с каждым полем | Реквизиты через точку: Документ.Контрагент.ИНН | Соединяйте справочник явно или берите реквизиты из одной таблицы |
| Тормозит на больших регистрах | Условие по неиндексируемому полю | Отбирайте по измерениям регистра, а не по реквизитам документов |
| Запрос из нескольких частей дублирует выборки | Одни и те же данные читаются несколько раз | Соберите основную выборку во временную таблицу и используйте её дальше |
| Пользователь ждёт с подвисшим окном | Отчёт формируется синхронно | Используйте универсальную форму БСП — она формирует отчёт в фоновом задании |
Ещё два приёма:
- 📉 Не включайте «Детальные записи» в вариант по умолчанию. Тысячи строк выводятся дольше, чем считаются итоги.
- 🧮 Включите для полей схемы ограничение на использование в условиях и группировках там, где они не нужны. Пользователь не построит случайно отчёт по реквизиту без индекса.
Замер удобно делать инструментом «Замер производительности» в режиме отладки: он показывает строку кода, на которой уходит время. Если это строка КомпоновщикМакета.Выполнить или Процессор.Инициализировать, правьте запрос.