Files
twenty/packages/twenty-docs/l/ru/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
T
github-actions[bot] 350b835fbc i18n - docs translations (#20095)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-27 20:48:05 +02:00

176 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Создание связей многие-ко-многим
description: Связывайте записи, где множество элементов по обе стороны могут быть связаны между собой с помощью объектов-связок.
---
Связи многие-ко-многим позволяют связывать несколько записей с обеих сторон. Например: много людей могут работать над многими проектами, и у каждого проекта может быть много людей.
<Warning>
**Функция Lab**: связи через объект-связку сейчас находятся в разделе Lab. Включите их в **Настройки → Обновления → Lab** перед тем как следовать этому руководству.
</Warning>
<Note>
Для этой функции также требуется включить **Расширенный режим** (переключатель внизу справа в Настройках).
</Note>
## Когда использовать связи многие-ко-многим
Используйте связь многие-ко-многим, когда обе стороны отношений могут иметь несколько связей:
| Связь | Пример |
| --------------- | --------------------------------------------------------------------------------------- |
| Люди ↔ Проекты | Один человек работает над несколькими проектами; у проекта несколько участников команды |
| Компании ↔ Теги | У компании может быть несколько тегов; один тег может относиться к нескольким компаниям |
| Товары ↔ Заказы | Товар может входить в несколько заказов; заказ содержит несколько товаров |
## Как это работает
Twenty использует шаблон **объекта-связки** для связей многие-ко-многим. Объект-связка находится между двумя объектами и хранит связи:
```
People ←→ Project Assignments ←→ Projects
```
У объекта **Project Assignments** (объект-связка) есть:
* Связь с Людьми (многие-к-одному)
* Связь с Проектами (многие-к-одному)
Когда вы включаете переключатель связи через объект-связку, Twenty отображает связанные записи напрямую вместо показа промежуточных записей объекта-связки.
## Требования
1. **Включите Junction Relations в Lab**: Перейдите в **Настройки → Обновления → Lab** и включите **Junction Relations**
2. **Включите Расширенный режим**: Переключите **Расширенный режим** внизу справа боковой панели Настроек
3. Спланируйте вашу модель данных:
* Какие два объекта вы соединяете?
* Как назвать объект-связку?
## Шаг 1: Создайте объект-связку
Сначала создайте промежуточный объект, который будет хранить связи.
1. Перейдите в **Настройки → Модель данных**
2. Нажмите **+ Новый объект**
3. Дайте ему понятное имя (например, "Project Assignment", "Team Member", "Product Order")
4. Включите переключатель «Пропустить создание поля „Имя“»
<img src="/images/user-guide/fields/new-pivot-object.png" alt="Новый объект-связка" />
5. Нажмите **Сохранить**
<Tip>
**Рекомендации по именованию**: Используйте название, описывающее связь, например "Project Assignment" или "Team Membership". Так модель данных становится более понятной.
</Tip>
## Шаг 2: Создайте связи между объектами и объектом-связкой
Добавьте поля связи из каждого из двух объектов в объект-связку.
### Первая связь (Объект A → Объект-связка)
1. Выберите ваш первый объект в **Настройках → Модель данных**
2. Нажмите **+ Добавить связь**
3. Выберите объект-связку (например, "Назначения по проектам")
4. Установите тип связи **Один-ко-многим** (один человек может быть связан со многими назначениями)
5. Назовите поля:
* Поле в объекте Люди: например, "Project Assignments"
* Поле на объекте-связке: например, "Person"
6. Нажмите **Сохранить**
### Вторая связь (Объект B → Объект-связка)
1. Выберите ваш второй объект в **Настройках → Модель данных**
2. Нажмите **+ Добавить связь**
3. Выберите объект-связку (например, "Назначения по проектам")
4. Установите тип связи **Один-ко-многим** (один проект может быть связан со многими назначениями)
5. Включите **"Это связь с объектом-связкой"**
<img src="/images/user-guide/fields/junction-relation-toggle.png" style={{width:'100%'}} />
6. Назовите поля:
* Поле на объекте-связке: например, "Project"
* Поле в объекте Проекты: например, "Team Members"
7. Нажмите **Сохранить**
## Шаг 3: Настройте отображение связи через объект-связку
Теперь настройте исходные объекты так, чтобы отображать связанные записи напрямую, минуя промежуточный объект-связку.
1. Перейдите в **Настройки → Модель данных**
2. Выберите первый объект (например, "Люди")
3. Найдите поле связи, указывающее на объект-связку (например, "Project Assignments")
4. Нажмите, чтобы отредактировать поле
5. Включите **"Это связь с объектом-связкой"**
6. Выберите **Целевую связь** (например, "Project" — поле на объекте-связке, указывающее на другую сторону)
7. Нажмите **Сохранить**
## Результат
После настройки:
* В записи **Person** поле "Project Assignments" показывает **Проекты** напрямую (не записи назначений)
* В записи **Project** поле "Team Members" показывает **Людей** напрямую
Объект-связка по-прежнему существует и хранит связи, но интерфейс показывает более чистое представление многие-ко-многим.
## Пример: Люди ↔ Проекты
Полный пошаговый пример:
### Создайте объект-связку
* Имя: **Project Assignment**
* Описание: "Связывает людей с проектами, над которыми они работают"
### Добавьте связи
1. **Люди → Назначение на проект**
* Тип: Один-ко-многим
* Поле в объекте Люди: "Project Assignments"
* Поле в объекте Assignment: "Person"
2. **Проекты → Назначение на проект**
* Тип: Один-ко-многим
* Поле в объекте Проекты: "Team Members"
* Поле в объекте Assignment: "Project"
### Настройте отображение объекта-связки
1. В объекте **Люди**:
* Отредактируйте поле "Project Assignments"
* Включите переключатель объекта-связки
* Цель: "Project"
2. В объекте **Проекты**:
* Отредактируйте поле "Team Members"
* Включите переключатель объекта-связки
* Цель: "Person"
### Использование
* Откройте запись Person → Просмотрите её проекты напрямую
* Откройте запись Project → Просмотрите участников команды напрямую
* Создавайте новые связи с любой стороны
## Добавление дополнительных данных к связям
Поскольку объект-связка — это настоящий объект, вы можете добавить пользовательские поля для хранения информации о связи:
* **Роль**: "Developer", "Designer", "Manager"
* **Дата начала**: Когда они присоединились к проекту
* **Выделенные часы**: Еженедельное количество часов на этот проект
Чтобы получить доступ к этим данным, перейдите непосредственно к объекту-связке или выполните запрос к нему через API.
## Ограничения
* **Импорт/экспорт CSV**: Прямой импорт связей многие-ко-многим не поддерживается. Вместо этого импортируйте записи в объект-связку.
* **Фильтры**: Фильтрация по связям многие-ко-многим может иметь ограниченные возможности.
## Связанные материалы
* [Поля связей](/l/ru/user-guide/data-model/capabilities/relation-fields) — объяснение типов связей
* [Создание пользовательских объектов](/l/ru/user-guide/data-model/how-tos/create-custom-objects) — как создавать объекты
* [Создание полей связи](/l/ru/user-guide/data-model/how-tos/create-relation-fields) — базовая настройка связей