Связи между сущностями (Relations)
Раздел временно скрыт из левого меню по умолчанию (находится в разработке), но функция полностью рабочая. Открыть список связей можно напрямую по адресу
/relations. Связи также можно создавать и редактировать прямо из конструктора сущности — этот способ подробно описан ниже и сейчас является основным.
Что такое связь
Связь соединяет две сущности (или сущность саму с собой) так, чтобы из карточки записи одной сущности было видно записи другой. Например: «Клиент» ↔ «Заявки», «Сотрудник» ↔ «Заявки на отсутствие», категория-дерево само с собой (родитель-потомок).
Каждая связь хранится как отдельный объект с техническим именем, типом и двумя сторонами — «левой» и «правой» сущностью.
Типы связей
| Тип | Обозначение | Смысл |
|---|---|---|
| One-to-Many (1 → ∞) | one_to_many | Одна запись левой сущности связана с несколькими записями правой (например, «Клиент» → много «Заявок») |
| Many-to-One (∞ → 1) | many_to_one | Обратная сторона one-to-many: текущая сущность ссылается на одну запись другой сущности |
| Many-to-Many (∞ ↔ ∞) | many_to_many | Каждая запись слева может быть связана с несколькими записями справа и наоборот (например, «Сотрудники» ↔ «Проекты») |
При сохранении тип many_to_one автоматически преобразуется в one_to_many с переставленными сторонами — это два взгляда на одну и ту же связь.
Создание связи из конструктора сущности
Это основной способ создания связи. Откройте сущность в конструкторе (раздел Сущности) и перейдите на вкладку Связи.
- Нажмите + Добавить связь
- Заполните System Name — техническое имя связи (например
incidents_to_users); после сохранения не редактируется - Выберите Relation Type: One-to-Many, Many-to-One или Many-to-Many
- Текущая сущность подставляется автоматически на одну из сторон; выберите вторую сущность из списка (системные и пользовательские сущности показаны отдельными группами)
- Заполните Display Label — название связи, которое увидит пользователь на вкладке в карточке записи (отдельно для каждого языка интерфейса и отдельно для каждой стороны связи)
- По желанию раскройте секцию Filters и задайте условия, ограничивающие, какие записи показываются как связанные (поле + оператор
=,≠,>,<,≥,≤, «содержит», «не содержит» + значение) - По желанию задайте Sort Order — порядок отображения связи среди других вкладок на карточке записи
- Нажмите Save
Список уже созданных связей сущности показан слева от формы; связи можно перетаскивать для изменения порядка, редактировать и удалять.
Связь сущности с собой (self-relation)
Если обе стороны связи — одна и та же сущность (типичный случай — иерархия категорий через поле «Родитель»), форма показывает названия для обеих сторон одновременно, так как нельзя определить «свою» сторону по имени таблицы.
Отдельный раздел «Связи» (/relations)
Помимо вкладки в конструкторе сущности, есть отдельный список всех связей в системе — таблица со столбцами: левая сущность, техническое имя, правая сущность, тип, параметры. Доступен по прямой ссылке /relations, создание новой связи — /relations/new. По функциональности это упрощённая версия той же формы (без построителя фильтров и многоязычных лейблов), также сохраняет тип one-to-many / many-to-many.
Связанные записи на карточке записи
Если для сущности настроены связи, на карточке записи (как описано в разделе Навигация) появляются дополнительные вкладки — одна на каждую связь, с названием, заданным в Display Label. На вкладке показана таблица записей второй сущности, связанных с текущей записью:
- Кнопкой Добавить можно найти и привязать существующую запись другой сущности (доступны только записи, которые проходят фильтр связи, если он задан)
- Кнопкой Создать можно сразу создать новую запись второй сущности, автоматически связав её с текущей
- Из таблицы можно открыть связанную запись или удалить связь (без удаления самой записи)
Если у сущности настроена модель состояний, рядом с вкладками связей есть вкладка Статус с таймлайном переходов, а также вкладка Граф связей — визуальная схема того, с какими записями других сущностей связана текущая запись.
Где ещё используются связи
- В конструкторе полей сущности есть тип поля, который позволяет выбрать одну или несколько записей другой сущности через существующую связь (множественный выбор записей) — удобно, когда связанные записи нужно показать прямо в форме, а не на отдельной вкладке.
- Связи учитываются при настройке полей с зависимостями («показывать только записи, ещё не связанные через эту связь» и похожие фильтры) в конструкторе сущности.
Смотрите также
- Обзор сущностей
- Навигация и карточка записи
- Категоризация — древовидные справочники реализованы через self-relation по полю «Родитель»