Убираем параметры из отбора СКД
Заметка о некоторых технических нюансах параметров данных и отборов СКД.
- Описание
- Подробнее
Описание
Вкратце, если тяжко продираться через мой стиль изложения: сделали СКД программно, получили в отборе картинку, как на рисунке. Заметка — о том, как такое убрать, и о сопутствующих наблюдениях.
Параметры данных СКД — сущность, равно относимая к "основе" СКД и к её настройкам. Сущность, претерпевающая серьёзные преобразования при компоновке рабочих коллекций СКД. Само понятие "Настройки СКД" неоднозначно — если рассуждать, исходя из интерфейса, то речь может идти о содержимом закладки "Настройки" конструктора СКД, а если исходить из состава свойств объекта "НастройкиКомпоновкиДанных", то также фигурируют и параметры данных. Разумеется, потому, что параметры могут упоминаться во многих конструкциях настроек. Но, параметры также могут применяться помимо настроек — в самых разных выражениях и в самых разных местах СКД. Коллекция параметров данных стоит особняком, она вроде бы и связана с сущностью настроек, и при этом требует независимого объявления/указания, обработки, наладки. Параметры принципиально отличаются от настроек уже хотя бы тем, что их механика (появившаяся ещё во времена Построителя запроса и Построителя отчёта) допускает указание разметкой в тексте исходного запроса, а значит, учитывается первичным компилятором набора схемы, читающим этот запрос.
Про параметры, и "жёсткие", и "мягкие", сказано предостаточно, например, тут. А вот об их инициализации известно мало. Понятно, что никакие настройки СКД к их определению не относятся, и это сугубо механизм самой схемы, будь то первичная декларация набора кодом либо конструктором, или переопределение кодом уже на этапе макета компоновки. Действия платформы по интерпретации параметров не поддаются наладке — все действия с ними возможны лишь уже после создания набора. Объект, отвечающий за чтение входного запроса, т.е. ИсточникДоступныхНастроекКомпоновкиДанных, не предоставляет инструментов, позволяющих повлиять на параметры, в т.ч. даже на уровне AvailableSettingsSource с принудительным behaviour, отличным от 0. Это проявляется, например, в том, чему и посвящена данная заметка.
Будь то конструктор или программное создание, берущее за основу запрос с "жёсткими" параметрами, наблюдается эффект появления в отборе, доступном пользователю как интерфейсная проекция компоновщика настроек, ветки "Параметры", где все эти параметры фигурируют как поля отбора. Темой заметки является принудительное отключение этого эффекта.
Параметры попадают в отбор по умолчанию всегда, как только отработал метод "Инициализировать" компоновщика настроек. При этом никаких собственно "настроек", т.е. ничего, касающегося отборов, в компоновщике ещё может не быть определено, и это не важно. Параметры данных на самом деле не связаны не только с настройками, но даже со свойствами СКД. Они подгружаются и поддерживаются настолько неявно, что их нет в, казалось бы, очевидных коллекциях.
Разберём на примере запроса к справочнику "Контрагенты".
