Как встроить внешний отчет в стандартные панели отчетов ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При разработке отчетов для 1С:Зарплата и управление персоналом 3.1 программисты часто сталкиваются с задачей: сделать так, чтобы новый отчет не просто открывался через меню «Дополнительные отчеты», а выглядел как часть системы. Например, чтобы он отображался в общем списке раздела «Кадровые отчеты» или «Отчеты по зарплате» наравне с типовыми решениями. Рассмотрим подробно, как реализовать эту задачу, для решения которой будет полезен справочник методов конфигурации Зарплата и кадры 3.1, проанализируем технические ограничения внешних файлов .erf и разберем наиболее эффективные способы интеграции.

Проблема внешних файлов отчетов

Основная сложность заключается в том, что в типовых конфигурациях на базе БСП (Библиотека стандартных подсистем) регистрация отчетов в панелях разделов происходит программно через Модуль менеджера отчета. Выясним причину: у внешнего файла отчета (с расширением .erf) модуль менеджера физически отсутствует. Следовательно, мы не можем прописать в нем процедуру НастроитьВариантыОтчета, которую ожидает система для автоматического вывода в интерфейс. Такая архитектура может приводить к проблемам, когда после обновления платформы или конфигурации перестают работать внешние отчеты из-за изменения в вызовах типовых функций.

Разберем по шагам два основных способа решения этой проблемы: использование расширений (рекомендуемый метод) и настройку через справочник дополнительных отчетов.

Способ 1. Использование расширения конфигурации

Это наиболее «чистый» и профессиональный способ. Расширение позволяет добавить отчету модуль менеджера и полноценно интегрировать его в механизмы БСП. Рассмотрим алгоритм действий:

  1. Создадим новое расширение или откроем существующее.
  2. Добавим наш отчет в расширение. Теперь у него доступен Модуль менеджера.
  3. В модуле менеджера отчета пропишем процедуру регистрации. Рассмотрим пример кода:

Процедура НастроитьВариантыОтчета(Настройки, ОписаниеОтчета, НастройкиРегистрации) Экспорт
    ОписаниеОтчета.ОпределитьИмяСхемыИВариантаПоУмолчанию = Ложь;
    ОписаниеОтчета.Схема = "ОсновнаяСхемаКомпоновкиДанных";
    
    // Привязываем отчет к подсистемам (например, Кадры)
    НастройкиРегистрации.Вставить("Размещение", Новый Массив);
    НастройкиРегистрации.Размещение.Добавить(Метаданные.Подсистемы.Кадры);
КонецПроцедуры

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

  1. В расширении найдем общий модуль ВариантыОтчетовПереопределяемый и создадим в нем процедуру-перехватчик ПослеДобавленияВариантовОтчетов (или аналогичную, в зависимости от версии БСП), чтобы добавить наш отчет в общий список идентификаторов. При таком подходе важно проводить анализ расширений на наличие ошибок с помощью специализированных инструментов — для этого подойдёт инструмент анализа расширений и поиска ошибок в 1С.

Способ 2. Регистрация через «Дополнительные отчеты и обработки»

Если использование расширений по каким-то причинам невозможно, мы можем использовать штатный механизм БСП. Для этого в модуле объекта внешнего отчета должна быть функция СведенияОВнешнейОбработке. Рассмотрим пример реализации:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.Наименование = "Мой Кадровый Отчет (внешний)";
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Мой Кадровый Отчет";
    НоваяКоманда.Идентификатор = "МойОтчетИдентификатор";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    
    Возврат ПараметрыРегистрации;
КонецФункции

После написания кода выполним следующие действия в режиме «1С:Предприятие»:

  1. Зайдем в раздел АдминистрированиеПечатные формы, отчеты и обработкиДополнительные отчеты и обработки.
  2. Загрузим наш файл отчета.
  3. В поле «Размещение» нажмем ссылку «Не определено» и выберем нужные разделы (например, «Кадры»).
  4. Настроим доступ для пользователей.

Важный нюанс: даже после этих действий отчет может не появиться в общем списке сразу. Выясним причину: в ЗУП 3.1 список отчетов в разделах кэшируется. Пользователю необходимо зайти в панель отчетов раздела (например, «Кадровые отчеты»), нажать кнопку «Настройка» (значок шестеренки) и в списке найти новый отчет, установив флаг его видимости. Если отчет не отображается даже там, попробуйте воспользоваться обработкой ОбновлениеВспомогательныхДанных.

Критически важная настройка: Хранилище вариантов

Чтобы внешний отчет вел себя полноценно — позволял пользователям сохранять свои настройки, менять группировки и отборы — необходимо правильно настроить Хранилище вариантов. Проанализируем, как это сделать:

Откроем свойства отчета в Конфигураторе. Найдем поле ХранилищеВариантов. По умолчанию оно пустое. Для интеграции с БСП в этом поле нужно выбрать стандартное хранилище конфигурации — ХранилищеВариантовОтчетов. Это позволит системе использовать стандартные формы работы с вариантами, сохранять «настройки пользователя» и выводить отчет в общие списки рассылок отчетов. Получить наименование отчета по его варианту из справочника можно с помощью готовых решений, что удобно для анализа.

Синхронизация данных и обновление кэша

Часто программисты сталкиваются с тем, что код написан верно, но отчет не появляется. Рассмотрим, как принудительно обновить данные метаданных в системе. Если вы добавили отчет через расширение или изменили его состав, рекомендуется запустить информационную базу с параметром:

/С ЗапуститьОбновлениеИнформационнойБазы

Это инициирует процедуры обновления БСП, которые пересчитают идентификаторы объектов метаданных и обновят кэш панелей отчетов. Также полезно проверить справочник ИдентификаторыОбъектовМетаданных, где должен появиться ваш новый объект.

Резюме

Мы рассмотрели, что для полноценного встраивания отчета в интерфейс ЗУП 3.1 недостаточно просто создать .erf файл. Оптимальным путем является использование расширения с заполнением процедуры НастроитьВариантыОтчета в модуле менеджера и обязательной установкой ХранилищеВариантовОтчетов. Если же отчет остается внешним, используйте механизм Дополнительных отчетов, не забывая о ручной настройке видимости пользователем через форму настройки списка отчетов в самом интерфейсе программы.

← На главную