Перейти к содержимому

Связь

Связь — это поле, которое указывает на одну запись из другого датасета. Пример: каждый платёж аренды связан с одной квартирой; в датасете «Квартиры» — основная сущность, в «Платежах» — поле-связь.

Главное в MVP: связи M:1. Одна квартира → много платежей. Обратно (M:N — связать несколько квартир с одним инвестором с долями) пока не поддерживается.

Подробное руководство по связям — в отдельном разделе «Связи между таблицами». Здесь — краткая справка по полю.

Когда использовать

  • «Платежи» ссылаются на «Квартиры».
  • «Сделки» ссылаются на «Монеты».
  • «Транзакции» ссылаются на «Категории», «Счета», «Контрагентов».

Как создать

  1. Откройте редактор схемы датасета, в котором будете ссылаться.
  2. Добавьте поле → тип «Связь».
  3. В поле «Целевой датасет» выберите тот датасет, на строки которого будете ссылаться. Сам себя — можно (например, «родительский объект» внутри «Квартир»).
  4. Сохраните.

Ввод значения

  • В редакторе строки — выпадающее меню/поиск по строкам целевого датасета.
  • Поиск идёт по полю-заголовку строки (как правило, первому текстовому полю целевого датасета).
  • Выбранная связь хранит id строки. Если эту строку удалить — см. ниже.

Что происходит при удалении родительской строки

⚠️ Уточнить: конкретное поведение (ON DELETE правило для row-level связей в jsonb) в текущей версии не отражено явно в коде. Возможные варианты — «значение становится null» или «строки-потомки удаляются каскадно». Перед массовым удалением родителей с длинной историей дочерних строк — проверьте поведение на тестовых данных или спросите поддержку.

В формулах

В формуле поле «Связь» хранит только id целевой строки, а не значения её полей. Это значит:

  • Нельзя написать apartment.purchase_price — точечной нотации не существует.
  • Нельзя написать apartment.address — то же самое.

Поэтому формулы M:1 ограничены работой с id. Если нужно «доходность каждой квартиры с учётом её платежей» — это считается на дашборде агрегацией с группировкой по полю-связи, а не формулой в датасете.

См. «Связи в формулах» — там подробный разбор и обходные пути.

В виджетах

  • Таблица: связь показывается как имя целевой строки + кликабельный переход.
  • Drill-down: при клике на сегмент диаграммы, сгруппированной по связи, видны строки этой группы.
  • Фильтр: фильтр по связи показывает выпадающий список целевых строк.

Связь vs Список vs Текст

СценарийЧто выбрать
Объект — отдельная сущность со своими полями, его данные нужны в нескольких местах.Связь
Фиксированный набор значений из 3–10 пунктов, никаких полей у них нет.Список
Произвольная подпись, не повторяется.Текст

Частые ошибки

  • Связь там, где хватит «Списка». Если у категории нет своих полей — это «Список» или «Теги», а не связь.
  • Ожидание автоматического обращения к полям родителя в формуле. Не работает; всё, что есть — это id. См. «Связи в формулах».
  • Удалили родителя — потерялись дочерние строки. До массового удаления убедитесь, что поведение каскада вас устраивает (см. ⚠️ выше).
  • Хотят M:N через два поля-связи в обе стороны. Не работает: получится две независимые M:1, а не настоящая M:N.

Что дальше