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