Почему в настройках СКД не отображаются доступные поля?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с системой компоновки данных (СКД) в 1С часто возникает ситуация, когда при программной загрузке настроек в компоновщик пользователь видит пустой список полей в отборах, сортировках или выбранных полях. Давайте разберем по шагам, как выявить причину и заставить СКД корректно отображать структуру отчета.

1. Правильная инициализация компоновщика настроек

Одной из частых ошибок является попытка загрузить настройки напрямую, минуя инициализацию источника данных. Чтобы компоновщик «понимал», с какими полями он работает, необходимо использовать ИсточникДоступныхНастроекКомпоновкиДанных. Рассмотрим корректный порядок действий:


СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных);
КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУсновчанию);

Важно помнить, что если вы работаете в управляемом приложении, передача схемы с сервера на клиент должна осуществляться через временное хранилище. Использование ПоместитьВоВременноеХранилище позволяет корректно передать контекст схемы для работы интерфейса на клиенте.

2. Настройка прав доступа (RLS)

Если вы уверены, что код написан верно, но поля всё равно отсутствуют, проанализируйте права пользователя. СКД автоматически проверяет права доступа к объектам метаданных, используемым в запросе. Если у пользователя нет права Просмотр на объект (например, регистр сведений или справочник), движок СКД может исключить все поля этого объекта из списка доступных, даже если запрос формально выполняется. Попробуйте временно дать полные права пользователю — если поля появятся, значит, проблема в настройках ролей или ограничении доступа (RLS).

3. Обязательная типизация полей

Еще одна неочевидная причина — отсутствие явного указания типов данных для полей в наборе данных. В конструкторе схемы компоновки данных на вкладке «Наборы данных» обязательно укажите ТипЗначения для каждого поля. Платформа 1С опирается на эту метаинформацию для формирования дерева доступных настроек. Если тип значения не задан (стоит «не определено»), поля могут не отображаться в интерфейсе выбора отборов.

4. Особенности работы с управляемыми формами

При реализации собственного отчета на управляемой форме, где используется свой реквизит типа КомпоновщикНастроекКомпоновкиДанных, необходимо учитывать:

  1. Инициализация должна происходить на сервере в процедуре ПриСозданииНаСервере.
  2. Передача схемы осуществляется через АдресВоВременноеХранилище.
  3. При использовании типовых отчетов лучше обращаться к методам самого отчета, так как платформа берет на себя часть работы по инициализации настроек.

Рассмотрим пример правильного кода для серверной инициализации:


&НаСервере
Процедура ЗаполнитьНастройкиПоУмолчанию()
    СКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Адрес = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Адрес);
    
    КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
    КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КонецПроцедуры

5. Нюансы работы отладчика

Будьте осторожны при отладке интерфейса. Платформа 1С имеет известный «артефакт» отладчика: при нажатии на символ «плюс» в дереве доступных полей список может визуально казаться пустым. Перед тем как искать ошибку в коде, попробуйте свернуть и развернуть соседние ветки или обновить отображение, переключившись между вкладками настроек. Часто это лишь особенность отрисовки дерева, а не реальное отсутствие данных.

Заключение

Если поля по-прежнему не видны, следуйте алгоритму:

Следуя этим рекомендациям, вы сможете добиться корректного отображения всех необходимых настроек в отчетах любой сложности.

← На главную