Для заполнения атрибута объекта 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

    Далее в типе объекта "Фильтр" нужно создать новый экземпляр:

    У параметра фильтра нужно будет указать алгоритм определения значения параметра:

    Настроенный фильтр нужно будет выбрать на визуале карточки сметы и сохранить визуал:

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

  • Спасибо!

Войдите или Зарегистрируйтесь чтобы комментировать.