Для представления данных, получаемых из разных источников и логически связанных между собой по одному или нескольким внешним ключам, используется визуальная модель Master-Detail (linkage).
Такая модель содержит в себе описание до четырех, связанных между собой, дочерних визуальных подмоделей, типом которых может служить как простая Query-модель, так и модель класса Master-Detail. Количество встроенных стилей (схем размещения) модели Master-Detail позволяет структурировать и представлять имеющиеся данные, практически, в любом необходимом виде. При этом, независимо от уровня вложенности, сохраненяются все фукциональные возможности Query-модели, как базового компонента модели Master-Detail. Все подмодели связаны между собой отношением parent-child, а также имеют прямую связь со своим владельцем - моделью-контейнером.
На следующем рисунке представлен результат работы модели Master-Detail со стилем 30 (Схема размещения 1-left-2-right), содержащей в своем составе три субмодели - 1) Query (left), 2) Query (top), 3) Linkage (bottom):
На следующем рисунке представлено окно редактора этой модели:
Модель Master-Detail ни содержит в своей структуре непосредственного описания принимаемых извне аргументов. Тем не менее, передача значений таких аргументов возможна - для этого в качестве имен необходимо использовать имена аргументов первой подмодели (Master).
Свойства модели Master-Detail
Свойство | Описание |
Код | Уникальный код (обозначение) модели |
Наименование | Полное наименование модели. Отображается в качестве заголовка окна-подложки. |
Стиль | Стиль представления, определяющий количество и расположение вложенных подмоделей. Подробное описание стилей приведено в следующем разделе. |
Справка | Код темы из справочного файла |
Master, Detail-1, Detail-2, Detail-3 | |
Модель | Тип модели: Query, Linkage (Master-Detail) |
URI | Идентификатор ресурса в формате: <class-controller>.<model>[?<key>=<value>[&...]] |
Родитель | Ссылка на модель-родитель. Может принимать одно из следующих значений: Master, Detail1, Detail2, ParentModel. Значение ParentModel устанавливает связь выбранной подмодели с моделью, из которой производилось открытие данной модели MasterDetail |
Аргументы |
Описание передаваемых/получаемых параметров в формате: <parent-column1>:<child-column1>, <parent-column2>:<child-column2>... |
Update style | Способ и порядок обновления записей в подмоделе |
Delete style | Способ и порядок удаления записей в подмоделе |
Зависит от статуса | Зависимость от текущего состояния родительской модели. Если такая модель присутствует, состояние подмодели будет автоматически меняться в соответствии с текущим статусом модели-родителя |
Отобразить | Вычисляемое выражение, значение которого отображается для каждой строки (доступно для ограниченного числа стилей) |
Стили модели Master-Detail
Как уже говорилось ранее, стиль модели Master-Detail определяет схему размещения (layout) ее подмоделей на рабочем окне. При этом, на функциональное поведение модели во время выполнения стиль, практически, не влияет. В любой момент разработчик может изменить схему размещения визуальных компонентов модели-владельца без потери заложенной в нее бизнес-логики.
В следующей таблице приведены возможные стили модели Master-Detail на момент публикации этого документа.
Код | Схема | Описание |
Две подмодели | ||
21 | ![]() |
Две Query-модели , расположенные вертикально |
22 | ![]() |
Две Query-модели, расположенных горизонтально |
23 | ![]() |
Две модели любого типа, расположенные в TabView |
24 | ![]() |
Две Query-моделиw, отображаемых в модальном Wizard-окне |
25 | ![]() |
DataWindow и TabView, расположенные вертикально |
26 | ![]() |
DataWindow и TabView, расположенные горизонтально |
Три подмлдели | ||
30 | ![]() |
Одна модель слева, и две модели справа, последняя из которых - Master/Detail |
31 | ![]() |
Три вертикально расположенные Query модели |
32 | ![]() |
Одна модель сверху и две снизу |
33 | ![]() |
Три горизонтально расположенные Query модели |
34 | ![]() |
Одна модель слева и две справа |
35 | ![]() |
Три модели любого типа, расположенные в TabView |
36 | ![]() |
Три модели в стиле OutLook |
37 | ![]() |
Две модели слева и одна справа |
38 | ![]() |
Две модели сверху и одна снизу |
39 | ![]() |
Три Query-модели, отображаемые в модальном Wizard-окне |
Четыре подмодели | ||
41 | ![]() |
Четыре модели любого типа, расположенные в TabView |
42 | ![]() |
Четыре модели в стиле OutLook |
43 | ![]() |
Четыре Query-модели, отображаемые в модальном Wizard-окне |
44 | ![]() |
Одна модель слева и три справа |
45 | ![]() |
Одна модель сверху и три снизу |