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 есть предустановленные связи между стандартными объектами:
| Исходный объект | Целевой объект | Тип связи |
| --------------- | -------------- | --------------- |
| Люди | Компании | Многие-к-одному |
| Возможности | Компании | Многие-к-одному |
| Возможности | Люди | Многие-к-одному |
## Лучшие практики
### Планирование связей
* **Составьте карту модели данных**: Планируйте связи перед их созданием
* **Учитывайте направление**: Подумайте, какой объект «владеет» связью
* **Избегайте циклических зависимостей**: Поддерживайте модель данных в чистоте
### Именование связей
* **Используйте понятные названия**: Сделайте так, чтобы было ясно, что представляет собой связь
* **Соблюдайте последовательность**: Используйте единые шаблоны именования для всех связей
* **Учитывайте обе стороны**: Корректно назовите обе стороны связи
### Производительность
* **Не злоупотребляйте связями**: Слишком много связей может замедлить ваше рабочее пространство
## Ограничения
* **Удаление связей** удаляет связи, но не связанные записи
* **Циклических связей** следует избегать для обеспечения целостности данных