Как связать объекты используя параметры

Runa

Администратор
Пример: есть объект "Категория" и два объекта "Модель" и "Вид отделки". В каждом объекте занесены все возможные варианты. Необходимо связать данные из объектов "Модель"и "Вид отделки" с каждой категорией: чтобы выбирая категорию были доступны лишь определённые модели и виды отделок.
Необходимость заключается в том, чтобы исключить возможность выбора неприемлемых сочетаний Категория-Модель и Категория-Вид отделки.

Для примера задание указанных данных будет производится в объекте "Заказ", где выбираются категория, модель и вид отделки:
Структура проекта для связи через параметр.png
При открытии заказа первым выбирается значение категории:
Выбор категории.png
Следующими надо выбрать модель и отделку. Пока в проекте нет нужной настройки, при открытии этих объектов будут открываться полные списки данных:
Список моделей.png Список отделок.png

Чтобы создать зависимость в объектах моделей и отделки от выбранной категории, в этих объектах надо добавить ссылку на объект категории.
Есть два способа добавления ссылки на объект: ручное добавление поля и автоматическое добавление:

1-ый способ: ручное добавление
В объектах "Модель" и "Отделка" добавляется поле ссылки на объект "Категория":
Ручное добавление поля ссылки на объект.png

2-ой способ: автоматическое добавление системного поля ссылки при создании формы связи
Создаётся форма связи на базе объекта категорий, которой задаётся имя "Модели":
Создание формы связи Модели.png
После её сохранения открывается вкладка формы "Дочерние списки" и выбирается объект "Модель" (сохраняя свойство "Связь" со значением "подчинённая"):
Добавление дочернего объекта в форму связи.png
При этом в объекте "Модель" автоматически добавилось системное поле ссылки на объект "~Категория" выделенное серым цветом с добавлением префикса с тильдой:
Создание системного поля ссылки на объект.png
Таким же образом создаётся форма связи на базе объекта "Категория" с дочерним объектом "Отделка" под именем "Отделки".
Для удобства в формах связи можно на вкладке "Управление" скрыть 1-ую вкладку детализации при просмотре.
После автоматического добавления системных ссылок на объекты в объектах моделей и отделок надо перевести поля из скрытых в видимые в списке и детализации (или только в детализации) - для установления связей с категориями.

После создания полей ссылок на категорию - надо задать значения категорий в записях объектов моделей и отделок, которым они принадлежат:
Задание категорий для моделей.png Задание категорий для отделок.png
Обратите внимание: если используется одна форма связи для родительского и дочернего списка, то записи дочернего списка можно создавать в этой форме. Если используется несколько форм, связывающих данные одного родительского объекта с несколькими дочерними объектами - то после создания записи в одном дочернем списке, для установления связи во втором и последующих объектах связь надо задавать вышеописанным способом вручную - в соответствующем объекте.

Теперь надо создать механизм передачи параметра.
В объекте "Заказ", для поля "Категория", свойству "Параметры-Передаваемый" задаётся имя параметра, например "категория":
Задание передаваемого параметра.png
Это означает, что заданное значение в поле категории будет передаваться через параметр с именем "категория" во все остальные объекты, на которые есть ссылка в данном объекте.

В объектах "Модель" и "Отделка" задаётся принятие параметра "категория" для фильтров: 1) включается фильтр по полю "~Категория" (можно внизу или на дополнительной вкладке), а для активированного свойства "Параметры-Принимаемый" задаётся выше указанный параметр "категория" (точность с сохранением регистра - обязательна!):
Задание принимаемого параметра в фильтре.png
На этом настройка механизма параметров закончена.

Открываем объект "Заказ". После задания категории, при открытии объектов моделей и отделок, в списке записей включается фильтр, в котором задаётся значение ранее выбранной категории:
Открытие списка с фильтром по параметру.png

Пример проекта в приложении.
 

Вложения

  • Связь через параметр.rbase
    1.8 KB · Просмотры: 60
Последнее редактирование модератором:
Сверху Снизу