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

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

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

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

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

У новичков Интеграма часто возникает недопонимание сути справочников и подчиненных таблиц.

Подчиненная таблица -- это набор записей, связанных с какой-то определенной основной записью. Например, позиции некоего заказа.

Справочное значение -- это ссылка на конкретное значение в таблице-справочнике. Например, статус заказа.

enter image description here

На картинке выше справочники обозначены – зеленым, подчиненная таблица - голубым

Рассмотрим такую структуру таблиц. Цена услуги задается для одной или нескольких моделей – их мы выбираем из списка, и здесь вот есть связь со справочником моделей – много моделей к одной услуге. Это – справочник.

enter image description here

Для выполнения услуги могут потребоваться детали – может быть несколько деталей, каждая по своей цене. Это подчиненная таблица цен, а для каждой цены мы указываем деталь из справочника.

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

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

Ликбез по Интеграму доступен здесь.