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