При разработке отчетов на Схеме компоновки данных (СКД) в управляемом приложении часто возникает необходимость настроить зависимый отбор. Популярный пример — пара справочников «Проект» и «Проектная задача», где задачи подчинены конкретному проекту. По умолчанию в автоматически генерируемой форме отчета при выборе задачи отображаются все элементы без учета выбранного проекта. Рассмотрим подробнее, как настроить автоматическую фильтрацию по владельцу средствами самого макета СКД, не создавая отдельную форму отчета.
Для реализации отбора подчиненного справочника по выбранному владельцу без создания формы отчета используем штатный механизм «Связи параметров выбора» непосредственно в схеме компоновки данных.
Разберем по шагам алгоритм настройки:
ПроектнаяЗадача.Отбор.ВладелецПроектОчищатьПосле этого платформа 1С в управляемом приложении начнет автоматически передавать значение ведущего поля Проект в качестве владельца при выборе значения поля ПроектнаяЗадача.
Важно: данная функциональность штатно работает в управляемом приложении (УФ). Для обычного приложения аналогичная настройка в макете СКД не отрабатывает на форме по умолчанию.
Проанализируем другие варианты решения задачи, которые также не требуют создания собственной формы отчета.
Если справочник «Проектные задачи» используется в разных отчетах и формах, можно задать связь параметров выбора прямо в конфигураторе на уровне реквизита или измерения. Для этого у реквизита или поля реквизита настраиваем свойство «Связи параметров выбора», указывая Отбор.Владелец со связью с нужным реквизитом. В этом случае все автоматически генерируемые формы будут подхватывать данное правило по умолчанию.
Если отчет встроен в конфигурацию, использующую Библиотеку Стандартных Подсистем (БСП) с подсистемой «Варианты отчетов», наложить параметры выбора можно программно в модуле объекта отчета. Для этого используется процедура ОпределитьНастройкиФормы:
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
// Настройка динамических параметров выбора через события формы
КонецПроцедуры
Выясним причину, почему отбор может не срабатывать даже после корректной настройки макета:
Проект на форме включен флаг использования отбора. Если поле выведено на форму, но галочка отбора снята, зависимое поле будет показывать полный список задач.ПараметрыДанных.Проект, а не как стандартное поле отбора, в колонке «Поле» настройки связей необходимо явно указывать путь к параметру.