При разработке расширений для конфигурации 1С:Зарплата и управление персоналом 3.1 программисты часто сталкиваются с ситуацией, когда новый отчет, добавленный в расширение, не появляется в привычном месте — панели типовых отчетов (например, в разделе «Кадровые отчеты»). Даже если отчет включен в соответствующую подсистему в конфигураторе расширения, он может отображаться либо в отдельном подразделе, либо быть доступным только через меню «Все функции» (Функции для технического специалиста). Разберем по шагам, почему это происходит и как корректно интегрировать ваш отчет в типовой интерфейс.
Современные конфигурации, построенные на базе Библиотеки стандартных подсистем (БСП), используют динамическое формирование панелей отчетов. Список, который мы видим в разделе «Кадровые отчеты», — это не просто перечень объектов метаданных, привязанных к подсистеме. Это результат работы справочника ВариантыОтчетов. Система собирает информацию обо всех доступных отчетах, сохраняет их настройки в этом справочнике и выводит в интерфейс на основании его данных. Если ваш отчет из расширения не «зарегистрирован» должным образом в механизмах БСП, он не попадет в общую форму ПанельОтчетовКадры.
Прежде чем приступать к программированию, рассмотрим наиболее простой вариант, который часто помогает в типовых ситуациях. Если отчет уже добавлен в расширение и вы его видите в списке всех функций, попробуем активировать его отображение через административные настройки.
Если же отчета в списке нет совсем, значит, система БСП еще не узнала о его существовании в составе расширения. В этом случае перейдем к программным методам.
Для того чтобы отчет автоматически регистрировался в справочнике вариантов при обновлении информационной базы, необходимо использовать программный интерфейс БСП. Рассмотрим, как это реализовать в расширении.
В конфигураторе расширения откроем Модуль менеджера вашего отчета. Нам необходимо создать или переопределить процедуру НастроитьВариантыОтчета. Именно эта процедура вызывается системой для получения метаданных о вариантах отчета и местах их размещения.
Пример программного кода для добавления в модуль менеджера:
Процедура НастроитьВариантыОтчета(Настройки, ОтчетМетаданные) Экспорт
// Определим описание основного варианта отчета
НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОтчетМетаданные, "Основной");
// Укажем, в какой подсистеме должен отображаться отчет.
// В ЗУП 3.1 для кадровых отчетов обычно используется подсистема "КадровыеОтчеты".
ПодсистемаКадровыеОтчеты = Справочники.Подсистемы.НайтиПоНаименованию("КадровыеОтчеты", Истина);
Если Не ПодсистемаКадровыеОтчеты.Пустая() Тогда
// Добавляем отчет в найденную подсистему
НастройкиВарианта.Размещение.Вставить(ПодсистемаКадровыеОтчеты);
КонецЕсли;
// Установим видимость по умолчанию для всех пользователей
НастройкиВарианта.ВидимостьПоУмолчанию = Истина;
КонецПроцедуры
Важно помнить, что если вы используете расширение, убедитесь, что в свойствах объекта Отчет установлена галочка Использовать стандартные команды. Это позволит системе автоматически создать необходимые элементы управления в интерфейсе.
При добавлении новых объектов в расширение 1С автоматически создает записи в служебном справочнике ИдентификаторыОбъектовРасширений. Иногда связь между метаданными и интерфейсом нарушается из-за того, что вспомогательные данные БСП не были обновлены. Выясним, как принудительно запустить процесс обновления.
Проанализируем ситуацию: если отчет виден во «Все функции», но его нет в настройках панелей, попробуем запустить программу с параметром командной строки:
/С ЗапуститьОбновлениеИнформационнойБазы.
Этот параметр заставит БСП заново просканировать все метаданные, включая те, что находятся в расширениях, и обновить справочники вариантов отчетов и идентификаторов.
Часто программисты забывают, что даже правильно зарегистрированный отчет не будет отображаться в панели ПанельОтчетовКадры, если у пользователя нет прав на его просмотр. Разберем, как настроить права в контексте расширения.
Отчет в этой роли установим права Использование и Просмотр.Внимание: Если отчет использует СКД (Схему компоновки данных), проверьте, есть ли у пользователя права на чтение всех объектов (справочников, документов, регистров), которые используются в запросах этого отчета. Если прав на данные нет, отчет может просто не отобразиться в списке из-за механизмов авто-фильтрации БСП.
Команда ПанельОтчетовКадры — это типовой механизм ЗУП 3.1, который открывает единую форму со списком всех кадровых отчетов. Чтобы ваш отчет попал именно туда, проанализируем настройки подсистем. В типовой конфигурации эта панель собирает отчеты, которые привязаны к подсистеме ЗарплатаКадрыБазовая -> Кадры -> КадровыеОтчеты. При добавлении отчета в расширение обязательно включите его в состав этой иерархии подсистем (достаточно добавить в расширение саму подсистему КадровыеОтчеты и отметить в ней ваш объект).
Для успешного отображения отчета в списке «Кадровые отчеты» в ЗУП 3.1 выполним следующие действия:
во-первых, убедимся, что отчет включен в типовую подсистему КадровыеОтчеты внутри расширения;
во-вторых, пропишем процедуру регистрации в модуле менеджера отчета;
в-третьих, проверим права доступа и, при необходимости, обновим информационную базу с параметром /С ЗапуститьОбновлениеИнформационнойБазы.
Используя эти методы, мы обеспечим бесшовную интеграцию кастомных отчетов в типовой интерфейс программы, делая работу пользователей удобной и привычной.