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