Развязочные таблицы

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

Посмотреть существующие и создать новые развязочные таблицы можно в справочнике Link Tables:

Dict_scr_LinkTables1

Серым цветом в списке выделены системные (ядерные) развязочные таблицы. У прикладного разработчика нет прав на их редактирование или удаление, но есть права на чтение.

Записи справочника можно фильтровать по Названию развязочной таблицы (Name). Системные развязочные таблицы можно скрыть, установив флаг Hide system.

Организация хранения структуры развязочных таблиц на уровне базы данных подробно описана в разделе Справочники в главе Схема KERNEL.

Форма редактирования структуры развязочных таблиц обладает меньшим количеством свойств по сравнению с формы редактирования справочников:

Dict_scr_LinkTables2

В заголовке формы отображается название класса развязочной таблицы и ее идентификатор.

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

С помощью кнопки Documents2_EditForm_bttn1 SQL script можно просмотреть SQL скрипт для создания или изменения объектов табличной части в СУБД.

С помощью кнопки Documents2_EditForm_bttn2 Class code можно просмотреть сгенерированный на C# класс, описывающий запись развязочной таблицы:

Dict_scr_LinkTables5

Свойства развязочной таблицы описываются в основном аналогично свойствам справочника. Единственное отличие во флаге Primary key, который указывает системе, что данное поле входит в первичный ключ (для справочника первичный ключ всегда поле ID). Для таких полей также автоматически устанавливается (и не может быть снят вручную) флаг Not null:

Dict_scr_LinkTables3

Чтобы связать с помощью развязочной таблицы три справочника (на приведенном выше снимке экрана это справочники PriceZones, Articles и PriceTypes), необходимо три свойства развязочной таблицы сделать ссылками на эти справочники. Для свойства-ссылки в скобках после типа (ссылка всегда типа long) написано название справочника или документа, на который она ссылается.

Теперь, чтобы дать конечному пользователю возможность заполнять данные развязочной таблицы, необходимо на закладке "Link Tables" в записи соответствующего справочника добавить созданную развязочную таблицу. Если пользователям необходимо предоставить возможность заполнять развязочную таблицу данными из любого из справочников, следует добавить ее в оба, если только из одного – в один.

C помощью развязочной таблицы можно связать произвольное число справочников или типов документов.

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

35_example

Как пример такой связи можно привести организацию прайс-листа товаров. Два справочника – Товары и Ценовые колонки – связываются между собой с помощью развязочной таблицы Прайс-лист, которая кроме двух свойств-ссылок на эти справочники содержит дополнительное свойство Цена. Пользователь, выбирая ценовую колонку для конкретного товара, сопровождает ее вводом цены.

Если в каждой ценовой колонке товар должен обладать только одной ценой, следует сделать свойства-ссылки развязочной таблицы Прайс-лист ключевыми, установив для них флаг Primary Key. В этом случае можно будет добавить в развязочную таблицу только одну запись для каждого набора Товар-Ценовая колонка.