Отношения многие-ко-многим

Отношения многие-ко-многим

Надстройка SaveToDB реализует специальный режим для редактирования отношений многие-ко-многим.

Предположим, в базе данных есть три таблицы: employees, territories, employee_territories.

Таблица employee_territories содержит две колонки внешних ключей: employee_id и territory_id.

Если загрузить данные из таблицы employee_territories без фильтрованных значений на ленте, то будут отображены только актуальные данные, как, например:

employee_idterritory_id_State_
Employee 1Territory 1
Employee 1Territory 2
Employee 2Territory 3

Надстройка добавляет колонку _State_ типа чек-бокс, чтобы удобно добавлять или удалить отношения по двойному клику.

Вы можете создать сводную таблицу, используя таблицу данных Excel как источник.

Разместите поля внешних ключей в осях и сумму колонки _State_ в ячейках.

Таблица будет выглядеть примерно следующим образом:

Territory 1Territory 2Territory 3
Employee 1
Employee 2
Employee 3

Надстройка добавляет списки значений колонок внешнего ключа в качестве элементов сводной таблицы.

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

Возвращаясь к таблице. Вы можете выбрать значение на ленте.

Например, если выбрать Territory 1, то таблица будет выглядеть следующим образом:

employee_idterritory_id_State_
Employee 1Territory 1
Employee 2Territory 1x
Employee 3Territory 1x

В колонке _State_ можно кликать, чтобы добавлять или удалять отношения.

Если же выбрать Employee 1, то таблица будет выглядеть примерно так:

employee_idterritory_id_State_
Employee 1Territory 1
Employee 1Territory 2
Employee 1Territory 3x

Для реализации этих возможностей, надстройка автоматически создает следующую конфигурацию, читая метаданные базы данных:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s07employee_territoriesemployee_idValidationLists07employeesTABLE[employee_id],[last_name]
 s07employee_territoriesterritory_idValidationLists07territoriesTABLE[territory_id],[territory_description]
 s07employee_territoriesemployee_idManyToManyATTRIBUTE
 s07employee_territoriesterritory_idManyToManyATTRIBUTE
 s07employee_territoriesAddStateColumnATTRIBUTE

В таблице используется тип ManyToMany для колонок внешнего ключа.

Также, используется тип AddStateColumn для добавления колонки _State_.

Также, создаются списки значений из таблиц первичных ключей.

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

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