Блог Интеграм

Рассказываем о проектах, обновлениях и событиях

Зависимые выпадающие списки Интеграм

- Опубликовано в Обучение

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

Например, при заполнении адреса некоего объекта нам надо показать в списке только улицы выбранного города, а в списке домов – только дома выбранной улицы.

enter image description here

На скриншоте мы видим выбранный город, в котором в списке улиц только его улицы, а в списке домов только дома выбранной улицы этого города.

В меню Структура иерархия для этого примера выглядит так:

enter image description here

Обратите внимание, что у ссылок на Улицу и Дом есть ссылочный реквизит, указывающий на родительский объект: город улицы и улица дома.

Для добавления такого реквизита надо в меню Структура найти ссылку на справочник Улица, как показано на следующей картинке, и добавить ей колонку Город.

enter image description here

Аналогично добавляется Улица для Дома.

Без добавления такой колонки в ссылку связанные списки не будут работать зависимым образом, а будут обычными списками.

Причина в том, что улицы и дома, и даже города, не являются уникальными. Уникальны только комбинации Улица–Город и Дом–Улица, поэтому в списках необходимо отображать информацию о родителе.

В таблицах родители справочных значений не показываются для компактности, но в выпадающих списках мы видим детальную информацию. Вот набор данных для примера из этой заметки:

enter image description here

Глубина связанности списков может быть любой, например, можно также включить Область в набор полей Объекта и выбирать город после выбора области.

Есть ещё такое ограничение, что среди прочих колонок, если таковые есть, ссылка на родителя должна быть левее всех. То есть, если мы ограничиваем дома по улицам, то колонка Улица должна идти до колонки Серия, которая тоже является справочной.

enter image description here

Обращение по API

При обращении за данными для выпадающего списка методом _ref_reqs необходимо передать в запросе два параметра: ID текущего объекта (параметр id) и ID значения из родительского списка (параметр r):

enter image description here

Запрос АПИ будет выглядеть примерно так:

https://app.integram.io/dtp/_ref_reqs/4152?JSON&id=4182&r=4162