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