Skip to content

Связи между сущностями (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 с переставленными сторонами — это два взгляда на одну и ту же связь.

Создание связи из конструктора сущности

Это основной способ создания связи. Откройте сущность в конструкторе (раздел Сущности) и перейдите на вкладку Связи.

  1. Нажмите + Добавить связь
  2. Заполните System Name — техническое имя связи (например incidents_to_users); после сохранения не редактируется
  3. Выберите Relation Type: One-to-Many, Many-to-One или Many-to-Many
  4. Текущая сущность подставляется автоматически на одну из сторон; выберите вторую сущность из списка (системные и пользовательские сущности показаны отдельными группами)
  5. Заполните Display Label — название связи, которое увидит пользователь на вкладке в карточке записи (отдельно для каждого языка интерфейса и отдельно для каждой стороны связи)
  6. По желанию раскройте секцию Filters и задайте условия, ограничивающие, какие записи показываются как связанные (поле + оператор =, , >, <, , , «содержит», «не содержит» + значение)
  7. По желанию задайте Sort Order — порядок отображения связи среди других вкладок на карточке записи
  8. Нажмите Save

Список уже созданных связей сущности показан слева от формы; связи можно перетаскивать для изменения порядка, редактировать и удалять.

Связь сущности с собой (self-relation)

Если обе стороны связи — одна и та же сущность (типичный случай — иерархия категорий через поле «Родитель»), форма показывает названия для обеих сторон одновременно, так как нельзя определить «свою» сторону по имени таблицы.

Отдельный раздел «Связи» (/relations)

Помимо вкладки в конструкторе сущности, есть отдельный список всех связей в системе — таблица со столбцами: левая сущность, техническое имя, правая сущность, тип, параметры. Доступен по прямой ссылке /relations, создание новой связи — /relations/new. По функциональности это упрощённая версия той же формы (без построителя фильтров и многоязычных лейблов), также сохраняет тип one-to-many / many-to-many.

Связанные записи на карточке записи

Если для сущности настроены связи, на карточке записи (как описано в разделе Навигация) появляются дополнительные вкладки — одна на каждую связь, с названием, заданным в Display Label. На вкладке показана таблица записей второй сущности, связанных с текущей записью:

  • Кнопкой Добавить можно найти и привязать существующую запись другой сущности (доступны только записи, которые проходят фильтр связи, если он задан)
  • Кнопкой Создать можно сразу создать новую запись второй сущности, автоматически связав её с текущей
  • Из таблицы можно открыть связанную запись или удалить связь (без удаления самой записи)

Если у сущности настроена модель состояний, рядом с вкладками связей есть вкладка Статус с таймлайном переходов, а также вкладка Граф связей — визуальная схема того, с какими записями других сущностей связана текущая запись.

Где ещё используются связи

  • В конструкторе полей сущности есть тип поля, который позволяет выбрать одну или несколько записей другой сущности через существующую связь (множественный выбор записей) — удобно, когда связанные записи нужно показать прямо в форме, а не на отдельной вкладке.
  • Связи учитываются при настройке полей с зависимостями («показывать только записи, ещё не связанные через эту связь» и похожие фильтры) в конструкторе сущности.

Смотрите также

Документация Orbita ITSM