Для заполнения атрибута объекта 1 получать список объектов 3, представленный в атрибуте объекта 2
Раздел: Модель данных и экранные формы
Есть 3 типа объектов: позиция, договор, смета
В "договоре" в атрибуте "позиции" может быть несколько позиций
В "смете" есть атрибуты "договор" и "позиции"
Подскажите пожалуйста, как можно для заполнения атрибута "позиции" в смете предоставить список только тех позиций, которые есть в "договоре"?
Войдите или Зарегистрируйтесь чтобы комментировать.
Комментарии
Для этого можно настроить объект-фильтр. Описание в документации: https://docs-public.gdcloud.org/platform/ru/setting-up-filter-object.html
Для данного кейса нужно будет зайти в реестр типа объекта "Атрибут типа" и найти атрибут "Позиции" из типа объекта "Договор":
В этом экземпляре нужно будет значение атрибута "Название таблицы для множественного выбора" для настройки источника данных.
Далее нужно создать источник данных на основе SQL:
Для типа объекта "Смета" название таблицы estimate, у "Договора" - contract, наименование поля для таблицы для атрибута "Договор" в типе объекта "Смета" - contract_id, а ms_9svb2f2ijhtz8fu4lgoggy1rj - это название таблицы для множественного выбора.
select
ms.obj_id
from
estimate e
join contract c on e.contract_id = c.id
join ms_9svb2f2ijhtz8fu4lgoggy1rj ms on c.id = ms.id
where
e.id = :obj_id
Далее в типе объекта "Фильтр" нужно создать новый экземпляр:
У параметра фильтра нужно будет указать алгоритм определения значения параметра:
Настроенный фильтр нужно будет выбрать на визуале карточки сметы и сохранить визуал:
При такой настройке в смете будут доступны для выбора только те позиции, которые указаны в договоре. После выбора договора карточку сметы нужно будет сохранить, чтобы можно было выбрать значения.
Спасибо!