snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
---
title: Поля
description: Разберитесь в роли полей и в том, как ими управлять.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## О полях
Поля похожи на столбцы в электронной таблице. Они хранят различные типы данных, такие как текст, числа или даты. Поля могут быть стандартными (встроенными) или пользовательскими (те, которые вы создаете).
### Стандартные Поля
Стандартные поля встроены в Twenty для решения общих бизнес-задач.
Например, `Имя` и `Фамилия` являются стандартными полями в объекте `Люди`. Они хранят текстовые данные для отдельных имен.
Вы не можете удалить стандартные поля, но можете деактивировать их, если они вам не нужны.
Вы также можете настраивать параметры стандартных полей типа `SELECT`, например параметры для поля `Stage` в «Сделках».
<img src="/images/user-guide/fields/standard-fields.png" style={{width:'100%'}} />
### Пользовательские Поля
Пользовательские поля можно добавлять к любому объекту. Вы можете хранить текст, числа, даты, выпадающие списки и многое другое. Используйте пользовательские поля для отслеживания информации, специфичной для вашего бизнеса.
Например, пользовательское поле для SpaceX может быть `Статус Активности Ракеты`, указывающее, работает ли ракета.
<img src="/images/user-guide/fields/custom-fields.png" style={{width:'100%'}} />
## Типы полей
Twenty поддерживает различные типы полей:
| Тип | Описание | Пример |
| ------------------- | --------------------------------------------------------------------------------------- | --------------------------- |
| Адрес | Структурированный адрес с улицей, городом, штатом/регионом, страной и почтовым индексом | Адрес офиса |
| Массив | Список текстовых значений | Теги |
| Булево | Флажок «истина/ложь» | Активен |
| Валюта | Денежное значение с кодом валюты | Сумма сделки (USD) |
| Дата | Значения дат | Дата закрытия |
| Дата и время | Дата со временем | Время встречи |
| Домен | Домен сайта (используется для компаний) | acme.com |
| Электронная почта | Адреса электронной почты (основной + дополнительные) | Электронная почта контакта |
| JSON | Структурированные данные JSON | Пользовательские метаданные |
| Ссылки | URL-адреса с метками (основной + дополнительный) | Веб-сайт, LinkedIn |
| Длинный текст | Многострочный текст | Описание, примечания |
| Множественный выбор | Несколько вариантов из предопределенного списка | Теги, категории |
| Число | Числовые значения (целые или десятичные) | Количество, оценка |
| Телефон | Телефонные номера с кодом страны | Рабочий телефон |
| Рейтинг | Рейтинг в звездах (1–5) | Приоритет, оценка |
| Связь | Ссылки на записи в других объектах | Компания → Люди |
| Выбрать | Один вариант из предопределенного списка | Этап, статус |
| Текст | Однострочный текст | Имя, должность |
## Создать пользовательское поле
Чтобы добавить пользовательское поле к любому объекту, выполните следующие шаги:
1. Перейдите в `Настройки` в левой боковой панели.
2. Перейдите в `Модель Данных`, затем выберите объект, который хотите настроить.
3. Продолжайте, нажав `+ Новое Поле`.
4. Выберите имя и тип поля, которые подходят вашим требованиям. Рассмотрите возможность добавления описания поля для лучшего понимания.
Ваше новосозданное поле теперь доступно в приложении среди других полей. Чтобы отобразить его в конкретном представлении, откройте меню параметров, затем выберите `Поля`.
<VimeoEmbed videoId="927628219" title="Видеодемонстрация" />
**Быстрый способ:** Нажмите кнопку **+** в верхнем правом углу любой таблицы объектов, затем выберите `Настроить поля`. Это автоматически откроет настройки Модели Данных.
<img src="/images/user-guide/fields/quick-new-field.png" style={{width:'100%'}} />
## Деактивировать поле
Вы можете деактивировать поле, чтобы скрыть его из приложения, не потеряв ваши данные. Считайте, что это что-то вроде скрытия поля, а не его удаления.
Вот как это можно сделать:
1. Найдите поле, которое вы хотите деактивировать, в настройках вашего объекта.
2. Щелкните на три точки `⋮` рядом с полем, чтобы открыть меню.
3. Выберите `Деактивировать` из выпадающего списка.
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}} />
Что происходит, когда вы деактивируете поле?
1. **В приложении:** Поле исчезает, и вы не можете добавлять в него новые значения.
2. **Существующие связи:** Если это реляционное поле, существующие связи остаются, но вы не можете создавать новые.
3. **Доступ по API:** Вы все еще можете получить доступ к полю и его данным через API.
Вы можете реактивировать Стандартные и Пользовательские Поля или выбрать их окончательное удаление.
## Сделать поля уникальными
Уникальность поля гарантирует, что разные записи не могут иметь одно и то же значение. Например, адреса электронной почты уникальны для каждого человека.
Если вы получаете ошибку при установке уникальности, проверьте дублирующиеся значения в ваших данных (включая удаленные записи).
## Индексы (расширенный режим)
Индексы базы данных управляются автоматически — добавлять собственные почти никогда не требуется и при этом легко допустить ошибку. При включенном расширенном режиме у каждого объекта есть раздел **Индексы** в `Settings → Data Model → <object>` для случаев, когда вы знаете, что вам нужен индекс.
## Лучшие практики в настройке полей
### Именование и ограничения
* **Имена в единственном и множественном числе должны различаться**: наш GraphQL API требует различных имен для мутаций
* **Защищенные имена полей**: некоторые имена зарезервированы для использования системой (например, `Type`, `Application`)
### Поля для валюты и телефона
* **Валюта по умолчанию**: может быть настроена через модель данных
* **Коды стран по умолчанию**: можно настроить для телефонных полей через модель данных
### Выбор полей
* **Можно выбрать стандартный вариант** для каждого поля Select
### Записать текстовые поля
* **Каждый объект имеет одно основное поле отображения**: Это поле отображается в крайнем левом столбце и представляет запись при ее связи с другими объектами. Это должно быть текстовое поле. Например, Люди используют `Имя` как основное поле, поэтому при связи человека с компанией вы увидите его имя во встраивании компании.

View File

@@ -0,0 +1,92 @@
---
title: Объекты
description: Узнайте о стандартных и пользовательских объектах в Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Стандартные объекты
Стандартные объекты - это предварительно определенные сущности в вашем рабочем пространстве, которые помогут вам начать работу. Они являются частью общей модели данных, доступной всем пользователям Twenty. Вы можете использовать их как есть, настраивать их или деактивировать.
<img src="/images/user-guide/objects/standard-objects.png" style={{width:'100%'}} />
### Люди
Объект `People` хранит ваши контакты. Он включает в себя контактные данные и историю взаимодействия, чтобы вы могли видеть все ваши взаимодействия с клиентами в одном месте.
### Компании
Объект `Companies` хранит ваши бизнес-аккаунты. В него входят такие данные, как индустрия, размер и местоположение. Компания связана с объектами `People` и `Opportunities`.
### Возможности
Объект `Opportunities` хранит данные, связанные со сделками. Он отслеживает продвижение потенциальных продаж от поиска до закрытия, фиксируя этапы, размеры сделок, связанные учетные записи, и ожидаемую дату закрытия. Вы можете просмотреть вашу воронку продаж в виде канбана.
### Заметки
Объект `Notes` хранит произвольные заметки, которые можно прикреплять к записям «Люди», «Компании», «Сделки» и другим записям. Используйте заметки, чтобы фиксировать итоги встреч, важные подробности и другую контекстную информацию.
### Задачи
Объект `Tasks` хранит задачи и поручения. Задачи можно связывать с записями «Люди», «Компании», «Сделки» и другими записями. Отслеживайте сроки, исполнителей и статус выполнения, чтобы не упускать последующие действия.
## Пользовательские объекты
Пользовательские объекты позволяют хранить информацию, уникальную для вашей организации, с которой стандартные объекты не справляются. Например, если вы SpaceX, вы можете создать пользовательский объект для Ракет и Запусков.
<img src="/images/user-guide/objects/custom-objects.png" style={{width:'100%'}} />
### Создание нового пользовательского объекта
Чтобы создать новый пользовательский объект:
1. Перейдите в Настройки в боковой панели слева.
2. В рабочей области перейдите к модели данных. Здесь вы сможете увидеть обзор всех ваших существующих стандартных и пользовательских объектов (как активных, так и деактивированных).
<VimeoEmbed videoId="926288174" title="Видеодемонстрация" />
3. Нажмите на `+ Новый объект` вверху. Введите имя (как в единственном, так и во множественном числе), выберите значок и добавьте описание для вашего пользовательского объекта, а затем нажмите Сохранить (в правом верхнем углу). Используя Листинг как пример пользовательского объекта, единственное число будет "листинг", а множественное - "листинги", вместе с описанием, например, "Листинги, которые хозяева создали для показа своей собственности."
4. Ваш пользовательский объект создан и появится в боковой панели. Вы можете сразу начать добавлять в него записи.
## Управление объектами
### Деактивация объектов
Если вам не нужен стандартный или пользовательский объект:
1. Перейдите в Настройки → Модель данных
2. Найти объект, который вы хотите деактивировать и нажать на него
3. Перейти на вкладку **Настройки** объекта
4. Нажмите кнопку `Deactivate`
5. Объект будет скрыт в вашем рабочем пространстве, но данные сохранятся
### Повторная активация объектов
Чтобы вернуть деактивированный объект:
1. Перейдите в Настройки → Модель данных
2. Включить фильтр `Деактивированные`
3. Искать деактивированные объекты (у них есть `Деактивированные` рядом с их именем)
4. Щелкните `⋮`, а затем `Activate`, чтобы снова активировать его
5. Объект и все его данные будут восстановлены
## Лучшие практики
### Когда создавать пользовательские объекты
* **Уникальные бизнес-сущности**: Объекты, специфичные для вашей отрасли или процесса
* **Сложные связи**: Когда нужно отслеживать связи между несколькими сущностями
* **Масштабируемые данные**: Когда у чего-то может быть много экземпляров
### Когда лучше использовать поля
* **Простые атрибуты**: Свойства, описывающие существующие объекты
* **Категории или метки**: Способы классификации существующих записей
* **Одиночные значения**: Информация, которой не требуется собственный жизненный цикл
### Именование объектов
* **Используйте понятные, описательные названия**: Сделайте очевидным, что представляет собой объект
* **Следуйте соглашениям**: Используйте единственное число для названия объекта и множественное — для коллекции
* **Учитывайте свою команду**: Выбирайте названия, которые будут понятны всем

View File

@@ -0,0 +1,94 @@
---
title: Поля связи
description: Связывайте записи между разными объектами с помощью полей связи.
---
## Типы связей
### Один-ко-многим
Одна запись в объекте A может быть связана со многими записями в объекте B.
**Пример:** Одна Компания может иметь много Людей (сотрудников).
### Многие-к-одному
Много записей в объекте A могут быть связаны с одной записью в объекте B.
**Пример:** Многие Люди могут принадлежать одной Компании.
### Связи с несколькими типами объектов
Некоторые объекты могут быть связаны с несколькими типами объектов на одной стороне связи.
**Пример:** Заметка может одновременно быть прикреплена к одному Человеку И одной Компании И одной Сделке. Заметка — на стороне «многие», связываясь с несколькими сторонами «один».
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
Аналогично, Проект (на стороне «один») может получать связи от нескольких Людей, нескольких Компаний и нескольких Заметок.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**Ограничение импорта/экспорта**: Связи, указывающие на несколько типов объектов, пока не поддерживаются для импорта/экспорта CSV. Это запланировано в нашей дорожной карте.
</Warning>
### Многие-ко-многим
Много записей в объекте A могут быть связаны с множеством записей в объекте B.
**Пример:** Многие Люди могут быть связаны со многими Проектами, и наоборот.
Связи многие-ко-многим используют шаблон **объекта-связки**: промежуточный объект, который соединяет обе стороны. С функцией связей через объект-связку Twenty напрямую отображает конечные связанные записи, скрывая промежуточный объект из интерфейса.
<Warning>
**Бета-функция**: Связи через объект-связку необходимо включить в **Settings → Community → Features** перед использованием.
</Warning>
См. раздел [Как создать отношения «многие-ко-многим»](/l/ru/user-guide/data-model/how-tos/create-many-to-many-relations) для получения полного пошагового руководства.
## Создание поля связи
1. Перейдите в **Настройки → Модель данных**
2. Выберите объект, в который вы хотите добавить связь
3. Нажмите **+ Новое поле**
4. Выберите **Связь** как тип поля
5. Выберите целевые объекты, с которыми нужно установить связь
6. Настройте параметры связи:
* **Имя поля на исходном объекте**: Название поля связи на объекте, который вы редактируете
* **Имя поля на целевом объекте**: Название поля связи, которое будет отображаться на целевом объекте
* Тип связи (один-ко-многим, многие-к-одному)
7. Нажмите **Сохранить**
## Стандартные связи
В Twenty есть предустановленные связи между стандартными объектами:
| Исходный объект | Целевой объект | Тип связи |
| --------------- | -------------- | --------------- |
| Люди | Компании | Многие-к-одному |
| Возможности | Компании | Многие-к-одному |
| Возможности | Люди | Многие-к-одному |
## Лучшие практики
### Планирование связей
* **Составьте карту модели данных**: Планируйте связи перед их созданием
* **Учитывайте направление**: Подумайте, какой объект «владеет» связью
* **Избегайте циклических зависимостей**: Поддерживайте модель данных в чистоте
### Именование связей
* **Используйте понятные названия**: Сделайте так, чтобы было ясно, что представляет собой связь
* **Соблюдайте последовательность**: Используйте единые шаблоны именования для всех связей
* **Учитывайте обе стороны**: Корректно назовите обе стороны связи
### Производительность
* **Не злоупотребляйте связями**: Слишком много связей может замедлить ваше рабочее пространство
## Ограничения
* **Удаление связей** удаляет связи, но не связанные записи
* **Циклических связей** следует избегать для обеспечения целостности данных

View File

@@ -0,0 +1,72 @@
---
title: Создание пользовательских полей
description: Пошаговое руководство по добавлению пользовательских полей в любой объект.
---
Пользовательские поля позволяют собирать информацию, характерную для вашего бизнеса. Добавляйте их в любой объект — стандартный или пользовательский.
## Шаги
1. Перейдите в **Настройки → Модель данных**
2. Выберите объект, в который вы хотите добавить поле
3. Нажмите **+ Новое поле**
4. Выберите **тип поля** (все типы см. в разделе [Поля](/l/ru/user-guide/data-model/capabilities/fields))
5. Введите **имя поля** и при необходимости описание
6. Настройте параметры, специфичные для поля (см. ниже)
7. Нажмите **Сохранить**
**Быстрый способ:** нажмите **+** в конце заголовков столбцов в любом табличном представлении → **Настроить поля**.
## Отображение поля в представлениях
Новые поля не отображаются автоматически. Чтобы отобразить:
1. Откройте табличное представление объекта
2. Нажмите **Параметры → Поля**
3. Нажмите **значок глаза** рядом с вашим полем, чтобы отобразить его
4. Перетащите, чтобы изменить порядок
## Параметры настройки
### Для полей «Выбор» / «Множественный выбор»
1. Нажмите **+ Добавить вариант**, чтобы создать варианты выбора
2. При необходимости задайте **вариант по умолчанию**
3. Перетащите, чтобы изменить порядок вариантов
<Note>
**Используйте имена API для импорта.** Включите **Расширенный режим** в Настройках, чтобы видеть имена API. См. [Сопоставление полей](/l/ru/user-guide/data-migration/capabilities/field-mapping).
</Note>
### Для валютных полей
Установите **валюту по умолчанию** (USD, EUR и т. д.) для новых записей.
### Для телефонных полей
Установите **код страны по умолчанию** для автозаполнения новых телефонных номеров.
### Уникальность поля
Включите **Уникальность**, чтобы предотвратить дубли значений между записями.
<Note>
Если уже есть дубликаты (включая удалённые записи), вы получите ошибку. Сначала устраните дубликаты.
</Note>
### Установка значений по умолчанию
Для полей «Выбор» вы можете указать, какой вариант будет предварительно выбран для новых записей. Для полей «Флажок» задайте, будет ли он установлен или снят по умолчанию.
## Деактивация поля
1. Перейдите в **Настройки → Модель данных**
2. Найдите поле
3. Нажмите **⋮ → Деактивировать**
Данные сохраняются. Позже вы сможете повторно активировать или удалить навсегда.
## Связанные материалы
* [Поля](/l/ru/user-guide/data-model/capabilities/fields) — описание всех типов полей
* [Частые вопросы о модели данных](/l/ru/user-guide/data-model/how-tos/data-model-faq) — распространённые вопросы

View File

@@ -0,0 +1,51 @@
---
title: Создание пользовательских объектов
description: Пошаговое руководство по созданию пользовательских объектов в Twenty.
---
Пользовательские объекты позволяют хранить информацию, уникальную для вашего бизнеса, которую стандартные объекты не охватывают. Например: проекты, товары, заявки или объявления.
<Note>
**Не уверены, нужен объект или поле?** См. [Понимание вашей модели данных](/l/ru/user-guide/data-model/overview) для получения рекомендаций.
</Note>
## Шаги
1. Перейдите в **Настройки → Модель данных**
2. Нажмите **+ Добавить объект**
3. Заполните:
* **Имя в единственном числе** (например, "Listing")
* **Имя во множественном числе** (например, "Listings")
* **Иконка**
* **Описание** (необязательно)
4. Нажмите **Сохранить**
Ваш объект сразу появится в боковой панели.
## Далее: добавьте поля
Новые объекты изначально содержат базовые поля. Добавьте пользовательские поля, чтобы собирать нужные данные:
1. В разделе **Настройки → Модель данных** выберите свой объект
2. Нажмите **+ Новое поле**
3. Выберите тип поля, настройте и сохраните
См. [Как создать пользовательские поля](/l/ru/user-guide/data-model/how-tos/create-custom-fields) для подробностей о типах полей и настройке.
## Связывание с другими объектами
Чтобы связать ваш объект с людьми, компаниями или другими объектами, создайте поле связи. См. [Как создать поля связей](/l/ru/user-guide/data-model/how-tos/create-relation-fields).
## Деактивация объекта
Если объект больше не нужен:
1. Перейдите в **Настройки → Модель данных → объект по вашему выбору → Настройки**
2. Нажмите на кнопку **Отключить**
Объект будет скрыт, но данные сохранятся. Позже вы сможете повторно активировать или удалить навсегда.
## Связанные материалы
* [Объекты](/l/ru/user-guide/data-model/capabilities/objects) — стандартные и пользовательские объекты
* [Частые вопросы о модели данных](/l/ru/user-guide/data-model/how-tos/data-model-faq) — распространённые вопросы

View File

@@ -0,0 +1,175 @@
---
title: Создание связей многие-ко-многим
description: Связывайте записи, где множество элементов по обе стороны могут быть связаны между собой с помощью объектов-связок.
---
Связи многие-ко-многим позволяют связывать несколько записей с обеих сторон. Например: много людей могут работать над многими проектами, и у каждого проекта может быть много людей.
<Warning>
**Бета-функция**: связи через объект-связку сейчас находятся в бета-версии. Включите их в **Настройки → Сообщество → Функции** прежде чем следовать этому руководству.
</Warning>
<Note>
Для этой функции также требуется включить **Расширенный режим** (переключатель внизу слева в Настройках).
</Note>
## Когда использовать связи многие-ко-многим
Используйте связь многие-ко-многим, когда обе стороны отношений могут иметь несколько связей:
| Связь | Пример |
| --------------- | --------------------------------------------------------------------------------------- |
| Люди ↔ Проекты | Один человек работает над несколькими проектами; у проекта несколько участников команды |
| Компании ↔ Теги | У компании может быть несколько тегов; один тег может относиться к нескольким компаниям |
| Товары ↔ Заказы | Товар может входить в несколько заказов; заказ содержит несколько товаров |
## Как это работает
Twenty использует шаблон **объекта-связки** для связей многие-ко-многим. Объект-связка находится между двумя объектами и хранит связи:
```
People ←→ Project Assignments ←→ Projects
```
У объекта **Project Assignments** (объект-связка) есть:
* Связь с Людьми (многие-к-одному)
* Связь с Проектами (многие-к-одному)
Когда вы включаете переключатель связи через объект-связку, Twenty отображает связанные записи напрямую вместо показа промежуточных записей объекта-связки.
## Требования
1. **Включите Junction Relations в Beta Features**: Перейдите в **Настройки → Сообщество → Функции** и включите **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) — базовая настройка связей

View File

@@ -0,0 +1,70 @@
---
title: Создание полей связи
description: Пошаговое руководство по связыванию объектов с помощью полей связи.
---
Поля связи соединяют записи из разных объектов — например, связывают контакты с компаниями.
<Note>
**Имена связей нельзя изменить после создания** (они влияют на API). Тщательно продумайте имена.
</Note>
## Перед началом
Решите:
* Какие объекты вы соединяете? (например, Контакты → Компании)
* Какая сторона — «один»? (например, Компания)
* Какая сторона — «многие»? (например, Контакты — много контактов работают в одной компании)
* Как должно называться поле на каждой стороне?
См. [Поля связей](/l/ru/user-guide/data-model/capabilities/relation-fields) — там объясняются типы связей.
## Шаги
1. Перейдите в **Настройки → Модель данных**
2. Выберите объект, где нужна связь (обычно это сторона «многие»)
3. Нажмите **+ Новое поле**
4. Выберите **Связь** как тип поля
5. Выберите **целевой объект**
6. Выберите **Один-ко-многим** или **Многие-к-одному**
7. Введите названия полей для обеих сторон связи
8. Нажмите **Сохранить**
## Пример: Контакты → Компании
* Перейдите в **Настройки → Модель данных → Контакты**
* Добавьте поле связи
* Целевой объект: **Компании**
* Тип: **Многие-к-одному**
* Поле у Контактов: **Компания**
* Поле у Компаний: **Сотрудники**
Теперь каждый контакт может быть связан с компанией, и каждая компания показывает свои контакты.
## Деактивация связи
1. Перейдите в **Настройки → Модель данных → нужный объект**
2. Найдите поле связи и нажмите на него
3. Нажмите кнопку **Деактивировать**
Связи сохраняются, но скрыты. Повторно активируйте, чтобы восстановить.
<Note>
**Деактивация связи не удаляет записи.** Удаляется только связь между ними.
</Note>
## Удаление связи
1. Перейдите в **Настройки → Модель данных → нужный объект**
2. Найдите поле связи и нажмите на него
3. Нажмите кнопку **Удалить**
<Note>
Применяется только к пользовательским связям. Стандартные связи можно только деактивировать.
</Note>
## Связанные материалы
* [Поля связей](/l/ru/user-guide/data-model/capabilities/relation-fields) — типы и ограничения
* [Как импортировать связи](/l/ru/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — массовый импорт связанных записей

View File

@@ -0,0 +1,22 @@
---
title: Настройте свою модель данных
description: Обзор вариантов настройки модели данных.
---
Модель данных Twenty полностью настраиваемая. Создавайте объекты, поля и связи в соответствии с вашим бизнесом.
## Быстрые ссылки
| Я хочу... | Руководство |
| --------------------------- | -------------------------------------------------------------------------------------------- |
| Создать новый объект | [Как создать пользовательские объекты](/l/ru/user-guide/data-model/how-tos/create-custom-objects) |
| Добавить поля в объект | [Как создать пользовательские поля](/l/ru/user-guide/data-model/how-tos/create-custom-fields) |
| Связать объекты между собой | [Как создать поля связей](/l/ru/user-guide/data-model/how-tos/create-relation-fields) |
## Подробнее
* [Понимание вашей модели данных](/l/ru/user-guide/data-model/overview) — ключевые концепции и советы по планированию
* [Объекты](/l/ru/user-guide/data-model/capabilities/objects) — стандартные и пользовательские объекты
* [Поля](/l/ru/user-guide/data-model/capabilities/fields) — все типы полей
* [Поля связей](/l/ru/user-guide/data-model/capabilities/relation-fields) — связывание объектов
* [Частые вопросы о модели данных](/l/ru/user-guide/data-model/how-tos/data-model-faq) — распространённые вопросы

View File

@@ -0,0 +1,157 @@
---
title: Часто задаваемые вопросы о модели данных
description: Часто задаваемые вопросы о модели данных Twenty.
---
## Управление объектами
<AccordionGroup>
<Accordion title="Могу ли я удалить пользовательский объект?">
Да, пользовательские объекты можно удалять. Вы также можете сначала деактивировать их, что скрывает объект и его данные из интерфейса, сохраняя при этом данные.
</Accordion>
<Accordion title="Могу ли я удалить стандартные объекты (Люди, Компании и т.д.)?">
Нет, стандартные объекты не могут быть удалены. Их можно только деактивировать: это скрывает их из интерфейса, но сохраняет данные.
</Accordion>
<Accordion title="Сколько пользовательских объектов я могу создать?">
Вы можете создать столько пользовательских объектов и полей, сколько вам нужно — цена не изменится.
</Accordion>
<Accordion title="Могу ли я переименовать стандартный объект?">
Вы можете переименовать метку стандартных объектов (Люди, Компании, Сделки), но не их имена API. Имена API фиксированы для единообразия во всех рабочих пространствах Twenty.
</Accordion>
<Accordion title="Могу ли я изменить значок объекта?">
Да, вы можете изменить значок как стандартных, так и пользовательских объектов в разделе **Настройки → Модель данных**.
</Accordion>
<Accordion title="Могу ли я переупорядочить объекты в левой панели навигации?">
Пока нет. На данный момент последовательность объектов фиксирована, но эта функция планируется в будущем выпуске.
</Accordion>
<Accordion title="Могу ли я скрыть объекты из левой панели навигации?">
Все активные объекты отображаются в навигации. Вы можете деактивировать ненужные объекты через **Настройки → Модель данных**.
</Accordion>
</AccordionGroup>
## Возможности полей
<AccordionGroup>
<Accordion title="Могу ли я изменить тип поля после создания?">
Нет, типы полей нельзя изменить после создания. Если вам нужен другой тип, создайте новое поле с правильным типом, перенесите данные, затем деактивируйте старое поле.
</Accordion>
<Accordion title="Почему мне нужны разные формы для единственного и множественного числа?">
Наш GraphQL API использует обе формы для различных операций:
* `createPerson` (единственное число) для действий с одной записью
* `createPeople` (множественное число) для массовых операций
Это создает ограничения, когда формы единственного и множественного числа совпадают, но улучшает опыт разработчика.
</Accordion>
<Accordion title="Почему некоторые названия полей защищены?">
Определенные названия полей, такие как `Тип` или `Приложение`, зарезервированы для системного использования. Выбирайте альтернативные названия, такие как `Категория` или `Классификация`.
</Accordion>
<Accordion title="Что происходит, когда я деактивирую поле?">
* Поле скрывается из интерфейса
* Существующие данные сохраняются
* Вы по-прежнему можете получить доступ к полю через API
* Существующие отношения сохраняются, но вы не можете создавать новые
* Вы можете повторно активировать поле позже
</Accordion>
<Accordion title="Могу ли я сделать поле обязательным?">
На данный момент сделать пользовательские поля обязательными нельзя. Все поля допускают пустые значения. Вы можете использовать рабочие процессы, чтобы обеспечить обязательность полей, отправляя уведомления или блокируя действия, когда поля пусты.
</Accordion>
<Accordion title="В чём разница между уникальным и обязательным?">
* **Уникальное**: две записи не могут иметь одно и то же значение в этом поле
* **Обязательное**: в поле должно быть значение (в настоящее время не поддерживается для пользовательских полей)
</Accordion>
<Accordion title="Могу ли я создавать поля-формулы?">
Формула поля наступают в **H2 2026**. До тех пор вы можете использовать рабочие процессы для автоматического вычисления и обновления значений полей.
</Accordion>
<Accordion title="Могу ли я использовать вложенные поля в моих объектах?">
Вложенные поля появляются в **H2 2026**. На данный момент вы можете использовать рабочие процессы для извлечения значений полей из связанных объектов. Например, чтобы отображать отрасль компании на записи Персоны, создайте пользовательское поле в Людях и используйте рабочий процесс для синхронизации значения.
</Accordion>
<Accordion title="Могу ли я переупорядочивать поля в объектах?">
Да, перейдите в Настройки → Модель данных → Объект по вашему выбору → Макет и нажмите **Настроить страницу записи**. Если эта кнопка отключена, вы должны создать запись.
</Accordion>
</AccordionGroup>
## Связи
<AccordionGroup>
<Accordion title="Могу ли я создать отношение, указывающее на тот же объект?">
Да! Отношения, ссылающиеся на тот же объект, поддерживаются и рекомендуются для таких случаев, как иерархии учётных записей. Например, создайте отношение из Компаний к Компаниям, чтобы отслеживать родительские и дочерние учётные записи.
</Accordion>
<Accordion title="Могу ли я создавать отношения многие-ко-многим?">
В **H2 2026** появятся отношения с многими. На данный момент создайте промежуточный объект с двумя отношениями один-ко-многим в качестве временного решения.
Например, чтобы связать Людей и Проекты (многие-ко-многим), создайте объект "Назначения по проектам" с:
* Связь с Людьми (много назначений → один человек)
* Связь с Проектами (много назначений → один проект)
</Accordion>
<Accordion title="Что такое отношения к нескольким типам объектов (Morph-отношения)?">
Они позволяют одному объекту связываться с несколькими различными типами объектов через одно поле. Например, Заметки могут одновременно быть прикреплены к Людям И Компаниям И Сделкам.
Каждая Заметка одновременно связана с одним Человеком, одной Компанией и одной Сделкой.
Подробнее см. в разделе [Поля связей](/l/ru/user-guide/data-model/capabilities/relation-fields).
</Accordion>
<Accordion title="Могу ли я создать несколько отношений между одними и теми же объектами?">
Да, вы можете создать несколько отношений между одними и теми же двумя объектами. Например, у Компании могут быть отношения "Основной контакт" и "Контакт для выставления счетов" к Людям.
</Accordion>
<Accordion title="Что происходит с отношениями, когда я удаляю запись?">
Когда вы удаляете запись, связь удаляется из связанных записей. Связанные записи не удаляются.
</Accordion>
<Accordion title="Могу ли я создать циклические отношения?">
Хотя это технически возможно, циклических отношений (A → B → C → A) следует избегать, поскольку они могут вызывать путаницу и потенциальные проблемы с производительностью.
</Accordion>
</AccordionGroup>
## Доступ и разрешения
<AccordionGroup>
<Accordion title="Где я могу увидеть и изменить мою модель данных?">
Перейдите в раздел **Настройки → Модель данных**, чтобы просмотреть и редактировать все свои объекты и поля.
</Accordion>
<Accordion title="Почему я не вижу Модель данных в настройках?">
Обратитесь к администратору вашего рабочего пространства. Доступ к модели данных обычно ограничен только администраторами.
</Accordion>
</AccordionGroup>
## Управление данными
<AccordionGroup>
<Accordion title="Есть ли ограничение на количество записей?">
Жёстких ограничений на количество записей нет. Однако очень большие наборы данных могут повлиять на производительность в некоторых представлениях. Используйте фильтры и представления, чтобы эффективно работать с большими наборами данных.
</Accordion>
<Accordion title="Могу ли я импортировать данные в пользовательские объекты?">
Да, вы можете импортировать данные CSV в любой объект, включая пользовательские объекты. Процесс импорта поддерживает сопоставление пользовательских полей. См. [как подготовить файлы CSV](/l/ru/user-guide/data-migration/how-tos/prepare-your-csv-files).
</Accordion>
<Accordion title="Могу ли я экспортировать конфигурацию модели данных?">
На данный момент встроенного экспорта конфигурации модели данных нет. Свяжитесь со службой поддержки, если вам нужно перенести модель данных между рабочими пространствами.
</Accordion>
<Accordion title="Сколько полей может иметь один объект?">
Максимальное количество полей, которое может иметь один объект, - 1600 полей в пределах одного объекта, включая как существующие, так и удаленные поля. Имейте в виду, что двадцать полей не будут исправлены в вашем проекте, если достигнут лимит в 1600 полей в соответствии с нашей политикой использования на ярмарке.
</Accordion>
</AccordionGroup>
## Нужна дополнительная помощь?
Ознакомьтесь с нашими [услугами по внедрению](/l/ru/user-guide/getting-started/capabilities/implementation-services), чтобы получить помощь в разработке сложной модели данных.

View File

@@ -0,0 +1,177 @@
---
title: Модель данных
description: Узнайте, что такое модель данных и как спроектировать её под ваш бизнес.
---
## Что такое модель данных?
Модель данных — это структура, определяющая, как информация организована в вашей CRM. Представьте это как **чертёж** ваших данных о клиентах — вы проектируете его один раз, а затем заполняете фактическими данными.
## Ключевые понятия
### Объекты
**Объекты** — это основные категории данных в вашей CRM. Каждый объект представляет тип сущности, которую вы хотите отслеживать.
В Twenty предусмотрены стандартные объекты:
* **People** — физические лица (контакты, лиды, партнёры)
* **Companies** — организации
* **Opportunities** — сделки или продажи
* **Примечания** — заметки, прикрепленные к записям
* **Tasks** — задачи, связанные с записями
Вы также можете создать **пользовательские объекты** для всего, что специфично для вашего бизнеса (например, Projects, Subscriptions, Events).
### Поля
**Поля** — это свойства или атрибуты, которые описывают каждый объект. Они хранят фактическую информацию.
Например, у объекта **People** есть такие поля, как:
* Имя
* Электронная почта
* Телефон
* Должность
* Company (связь с объектом Companies)
Поля имеют разные **типы**: текст, число, дата, список, множественный выбор, связь и другие. Вы можете добавлять пользовательские поля к любому объекту.
### Записи
**Записи** — это отдельные элементы внутри объекта — реальные данные, которые вы создаёте и которыми управляете.
Например:
* "John Smith" — это **запись** в объекте People
* "Acme Corp" — это **запись** в объекте Companies
**Аналогия:**
| Концепция модели данных | Аналогия из реального мира |
| ----------------------- | ---------------------------------------------- |
| **Объекты** | Разделы в книге (категории) |
| **Поля** | Столбцы в электронной таблице (свойства) |
| **Записи** | Строки в электронной таблице (реальные записи) |
Вы проектируете модель данных (объекты + поля) один раз, затем создаёте множество записей в рамках этой структуры.
## Зачем настраивать вашу модель данных?
Каждый бизнес работает по-своему. Настройка вашей модели данных означает, что вы можете адаптировать Twenty под **ваши** процессы, а не загонять их в жёсткую систему.
Twenty предоставляет полную гибкость:
* Создавайте столько пользовательских объектов, сколько вам нужно
* Добавляйте неограниченное количество пользовательских полей
* Цена не меняется в зависимости от настроек
## Советы по проектированию вашей модели данных
### 1. Начните с основных объектов
Определите основные сущности, с которыми вы работаете. В Twenty уже предусмотрено:
* **People** — ваши контакты
* **Companies** — ваши компании
* **Opportunities** — ваши сделки
Подумайте, что ещё может понадобиться:
* Stripe нужен объект `Subscriptions`
* Airbnb нужен объект `Trips`
* Акселератору нужен объект `Batches`
### 2. Используйте поля для вариаций, а не новые объекты
Если что-то является лишь характеристикой существующего объекта, сделайте это **полем**.
**Используйте поля для:**
* Категорий и меток (например, `Industry` для Companies)
* Значений статуса (например, `Stage` для Opportunities)
* Атрибутов и свойств
### 3. Создавайте объект, если он существует сам по себе
Если у концепции есть свой жизненный цикл, свойства или отношения, она заслуживает отдельного объекта.
**Создавайте объект для:**
* **Projects** — со сроками, владельцами и задачами
* **Subscriptions** — связывают компании, продукты и счета
* **Events** — включают участников и последующие действия
Они выходят за рамки одного поля, поскольку несут свои данные и связи.
### 4. Создавайте объект, когда число записей не ограничено
Если что-то может связываться многократно, и вы не знаете, сколько раз, используйте объект.
**Плохой подход:**
Создание полей вроде `Product 1`, `Product 2`, `Product 3`...
**Хороший подход:**
Создайте объект `Products` и свяжите его с записями. Таким образом, вы можете поддерживать один, два или сто товаров без изменения вашей модели.
### 5. Сначала — простота
Начните с полей. Переходите к новым объектам только когда почувствуете ограничения:
* Слишком много полей в одном объекте
* Повторяющиеся записи, которые должны быть отдельными
* Связи, которые не вписываются должным образом
## Специальная заметка по Людям, Компаниям и Возможностям
<Warning>
**Синхронизация электронной почты и календаря работает только с Людьми, Компаниями и Возможностями.**
Это единственные объекты, в которых вы можете получить доступ к синхронизированным письмам и встречам из вашего почтового ящика/календаря. Рекомендуем по возможности использовать их.
</Warning>
**Лучшие практики:**
* Если вам нужны категории Людей, используйте поля (а не новые объекты)
* Пример: используйте поле `Person Type` со значениями "Потенциальный клиент" и "Партнёр" вместо создания отдельных объектов
* Создайте разные **представления** для фильтрации: одно — для партнёров, другое — для потенциальных клиентов
**Допустимо иметь поля, которые применимы не к каждой записи.** Например, поле `Referral Link` у Людей, которое применяется только когда `Person Type = Partner`. Скройте это поле в представлениях, где оно не актуально.
## Вопросы, которые помогут сделать выбор
Спросите себя:
<Check>Является ли это просто свойством того, что у меня уже есть, или ему нужны свои собственные свойства?</Check>
<Check>Понадобится ли мне когда-нибудь отслеживать несколько таких для одной записи, не зная заранее, сколько?</Check>
<Check>Связывается ли эта концепция с несколькими разными объектами, а не только с одним?</Check>
<Check>Будет ли у неё собственный жизненный цикл (стадии, даты начала/окончания)?</Check>
Если хотя бы на один из них ответ «да», вероятно, пришло время для нового объекта.
## Доступ к вашей модели данных
1. Перейдите в **Настройки** в левой боковой панели
2. Нажмите **Модель данных**
3. Просмотрите все ваши объекты (стандартные и пользовательские)
4. Нажмите любой объект, чтобы просмотреть и отредактировать его поля
<Note>
**Не видите «Модель данных» в настройках?**
Доступ к модели данных обычно ограничен администраторами. Свяжитесь с администратором рабочего пространства, если вам нужен доступ.
</Note>
## Следующие шаги
После того как вы спланировали модель данных:
* [Как создать пользовательские объекты](/l/ru/user-guide/data-model/how-tos/create-custom-objects)
* [Как создать пользовательские поля](/l/ru/user-guide/data-model/how-tos/create-custom-fields)
* [Как создать поля связей](/l/ru/user-guide/data-model/how-tos/create-relation-fields)
## Нужна Помощь?
<Tip>
Нужна помощь в проектировании вашей модели данных? [Найти сертифицированного партнера](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-data-model) для проектирования и построения ваших объектов, полей и отношений.
</Tip>