Создание развязочной таблицы

Допустим, перед нами стоит задача реализовать возможность добавления несколько дополнительных адресов для записей созданного ранее справочника Agents. Причем, во-первых, мы не знаем заранее, сколько дополнительных адресов может понадобиться в каждом конкретном случае: может быть несколько, а может и ни одного. Во-вторых, не исключена ситуация, что какое бы число дополнительных адресов мы не сочли достаточным, для какой-либо записи может возникнуть необходимость в еще большем количестве.

Можно решить эту задачу добавлением нескольких дополнительных свойств для хранения адресов в справочник Agents. В случае если в какой-нибудь момент времени для какой-либо записи их окажется недостаточно, прикладной разработчик сможет добавить новые свойства в справочник.

Или же можно сделать дополнительный справочник адресов Addresses, в котором хранить лишь перечень адресов вида: Адрес 1, Адрес 2, Адрес 3... Связать этот справочник с помощью развязочной таблицы со справочником Agents и уже в самой развязочной таблице и хранить адреса:

HowTo_LinkTable1

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

Создаем и заполняем справочник Addresses. Остановимся для начала на трех дополнительных адресах:

HowTo_LinkTable2

В справочнике развязочных таблиц (пункт меню DevBookmark_LinkTables Linktables) создаем новую запись:

HowTo_LinkTable3

На закладке "Main" задаем основные параметры развязочной таблицы:

HowTo_LinkTable4

Название справочника Name определяет названия его объектов в базе данных. Описание Caption будет отображаться в экранных формах.

На закладке "Properties" задаем свойства развязочной таблицы. Два из них делаем ссылками на справочники Agents и Addresses:

HowTo_LinkTable5

Сохраняем развязочную таблицу, компилируем метаданные и завершающим шагом создаем объекты развязочной таблицы в СУБД в схеме Ultima.

Развязочная таблица не имеет собственной формы редактирования, как, например, справочник. Записи в нее добавляются посредством формы редактирования одного или нескольких из связанных с ней справочников. В нашем случае логично и удобно добавлять дополнительные адреса для записи справочника Agents из ее же формы редактирования.

Для этого следует прописать созданную развязочную таблицу в справочнике. Открываем справочник Agents на закладке "Link tables" и добавляем новую развязочную таблицу:

HowTo_LinkTable6

В качестве значения свойства Link table выбираем созданную развязочную таблицу, значение Link property – свойство развязочной таблицы, которое ссылается на справочник Agents:

HowTo_LinkTable7

После этого в форме редактирования справочника появится закладка "Additional addresses" (название совпадает со значением свойства Caption, введенным при добавлении развязочной таблицы в справочник), на которой будут расположены связанные с записью справочника данные развязочной таблицы:

HowTo_LinkTable8

Перейдем к созданию более сложных объектов.