Связь
Связь — это поле, которое указывает на одну запись из другого датасета. Пример: каждый платёж аренды связан с одной квартирой; в датасете «Квартиры» — основная сущность, в «Платежах» — поле-связь.
Главное в MVP: связи M:1. Одна квартира → много платежей. Обратно (M:N — связать несколько квартир с одним инвестором с долями) пока не поддерживается.
Подробное руководство по связям — в отдельном разделе «Связи между таблицами». Здесь — краткая справка по полю.
Когда использовать
- «Платежи» ссылаются на «Квартиры».
- «Сделки» ссылаются на «Монеты».
- «Транзакции» ссылаются на «Категории», «Счета», «Контрагентов».
Как создать
- Откройте редактор схемы датасета, в котором будете ссылаться.
- Добавьте поле → тип «Связь».
- В поле «Целевой датасет» выберите тот датасет, на строки которого будете ссылаться. Сам себя — можно (например, «родительский объект» внутри «Квартир»).
- Сохраните.
Ввод значения
- В редакторе строки — выпадающее меню/поиск по строкам целевого датасета.
- Поиск идёт по полю-заголовку строки (как правило, первому текстовому полю целевого датасета).
- Выбранная связь хранит 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.