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