--- title: Импорт связей между объектами с помощью CSV description: Полное пошаговое руководство по связыванию записей при импорте CSV. --- ## Обзор В этом руководстве показано, как импортировать связи между объектами — например, связывать Людей с Компаниями, или Возможности с Людьми. **Что можно импортировать:** Только связи типа «один-ко-многим», указывающие на один тип объекта. Связи, указывающие на несколько типов объектов (например, Заметки, связанные с Людьми И Компаниями), пока не поддерживаются для импорта. ## Понимание связей ### Что такое связь «один-ко-многим»? В связи «один-ко-многим»: * **Одна** компания имеет **много** людей (сотрудников) * **Одна** компания имеет **много** возможностей * **Один** человек имеет **много** задач Сторона «один» — это **родитель**. Сторона «многие» — это **дочерняя** сторона. ### Типичные связи в Twenty | Связь | Сторона «один» (родитель) | Сторона «многие» (дочерняя) | | ---------------------- | ------------------------- | --------------------------- | | Компании → Люди | Компания | Люди | | Компании → Возможности | Компания | Возможности | | Люди → Задачи | Человек | Задачи | | Люди → Заметки | Человек | Заметки | ## Шаг 1: Определите стороны «один» и «многие» Перед импортом определите, какой объект является родительским, а какой — дочерним. **Спросите себя:** «У одного [Объект A] есть много [Объект B]?» * Одна Компания → Много Людей ✓ (Компания — родитель) * Один Человек → Много Компаний ✗ (Это неверно — человек принадлежит одной компании) ## Шаг 2: Сначала импортируйте родительские записи Родительская запись (сторона «один») должна существовать в Twenty, прежде чем вы сможете на неё сослаться. **Порядок импорта:** 1. **Компании** в первую очередь (без зависимостей) 2. **Люди** во вторую очередь (связь с компаниями) 3. **Возможности** в третью очередь (связь с компаниями и/или людьми) 4. **Задачи/Заметки** (связь с любым из вышеперечисленных) **Если родительская запись не существует, импорт завершится с ошибкой.** Всегда проверяйте, что Компании импортированы до импорта Людей со ссылками на компании. ## Шаг 3: Запишите уникальный идентификатор родительской записи Вам нужно ссылаться на родительскую запись с помощью **уникального идентификатора**. Доступные варианты: | Родительский объект | Доступные уникальные идентификаторы | | ----------------------------------- | -------------------------------------------------------------------------------- | | **Компании** | `id` (UUID), `domain` (рекомендуется) или любое пользовательское уникальное поле | | **Люди** | `id` (UUID), `email` или любое пользовательское уникальное поле | | **Участники рабочего пространства** | `id` (UUID), `email` (не имя) | | **Пользовательские объекты** | `id` (UUID) или любое поле, отмеченное как уникальное | **Рекомендуется:** Используйте `domain` для Компаний и `email` для Людей. Они удобочитаемы и их легко проверить в вашей таблице. ### Поиск идентификатора Если вам нужен `id`: 1. Экспортируйте родительские записи из Twenty 2. Экспорт включает столбец `id` 3. Используйте эти ID в файле дочерних записей ## Шаг 4: Убедитесь, что поле связи существует Перед импортом убедитесь, что между вашими объектами существует поле связи. **Чтобы проверить или создать:** 1. Перейдите в **Настройки → Модель данных** 2. Выберите ваш дочерний объект (например, Люди) 3. Найдите поле связи, указывающее на родителя (например, Компания) 4. Если его нет, создайте его: * Нажмите **+ Добавить поле** * Выберите тип **Связь** * Выберите родительский объект ## Шаг 5: Подготовьте ваш файл CSV Добавьте в ваш дочерний CSV столбец, который ссылается на родителя по его уникальному идентификатору. ### Пример: Связывание Людей с Компаниями **Ваш CSV-файл для Людей:** ```csv firstName,lastName,email,jobTitle,companyDomain John,Smith,john@acme.com,CEO,https://acme.com Jane,Doe,jane@widgets.co,CTO,https://widgets.co Bob,Johnson,bob@techstart.io,Developer,https://techstart.io ``` Столбец `companyDomain` ссылается на домен Компании. ### Требования к формату | Идентификатор | Формат | Пример | | ----------------- | ----------------------------------- | -------------------------------------- | | Домен | Формат URL | `https://acme.com` | | Электронная почта | Стандартный адрес электронной почты | `john@acme.com` | | ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` | **Формат домена имеет значение!** Используйте `https://domain.com` (не просто `domain.com`). Это соответствует тому, как Twenty хранит домены Компаний, и предотвращает ошибки сопоставления. ### Важные правила 1. **Требуется точное совпадение** — значение должно в точности соответствовать родительской записи 2. **Сопоставляйте только ОДИН уникальный идентификатор** — не указывайте одновременно `companyId` И `companyDomain` 3. **С учётом регистра** — `Acme.com` ≠ `acme.com` ## Шаг 6: Загрузите и сопоставьте связь 1. Перейдите к дочернему объекту (например, Люди) 2. Нажмите **⋮** → **Импорт записей** 3. Загрузите ваш CSV-файл 4. На шаге сопоставления полей: * Найдите столбец связи (например, `companyDomain`) * Сопоставьте его с полем связи **Компания** 5. Завершите оставшееся сопоставление 6. Проверьте ошибки и подтвердите Twenty автоматически свяжет каждую дочернюю запись с соответствующим родителем. ## Шаг 7: Проверьте импорт После импорта: 1. Откройте несколько дочерних записей (например, Люди) 2. Убедитесь, что в поле связи указан правильный родитель (например, Компания) 3. Откройте родительскую запись и проверьте раздел связанных записей ## Распространённые ошибки, которых следует избегать | Ошибка | Проблема | Решение | | -------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------- | | **Неправильный порядок импорта** | Импорт Людей раньше Компаний | Всегда сначала импортируйте родительские записи, затем дочерние | | **Неверный формат домена** | Использование `acme.com` вместо `https://acme.com` | Используйте полный формат URL с `https://` | | **Несколько уникальных полей** | Сопоставление одновременно `companyId` И `companyDomain` | Сопоставляйте только ОДИН уникальный идентификатор | | **Отсутствует поле связи** | Поля связи нет в модели данных | Создайте его в **Настройки → Модель данных** перед импортом | | **Несуществующие записи** | Родительская запись не существует в Twenty | Сначала импортируйте родительские записи или проверьте опечатки | | **Несовпадение регистра** | `Acme.com` в файле, но `acme.com` в Twenty | Обеспечьте точное совпадение регистра | ## Связь с участниками рабочего пространства При связывании с участниками рабочего пространства (вашей командой): * Используйте их **адрес электронной почты**, а не имя * Пример: `owner@yourcompany.com`, а не «John Smith» ```csv taskName,assignedTo Follow up with client,john@yourcompany.com Review proposal,jane@yourcompany.com ``` ## Часто задаваемые вопросы У вас есть два варианта: 1. Используйте Twenty `id` (экспортируйте родительские записи, чтобы получить их ID) 2. Создайте пользовательское уникальное поле в вашей модели данных для хранения внешнего ID из вашей предыдущей системы Да! Укажите уникальный идентификатор дочерней записи (например, `email` для Людей) и новое значение связи. Импорт обновит связь. Связи многие-ко-многим пока не поддерживаются для импорта. Это запланировано на первое полугодие 2026 года. Связи, указывающие на несколько типов объектов, пока не поддерживаются для импорта/экспорта. Это запланировано в нашей дорожной карте. Импорт покажет ошибку для этой строки. Вы можете либо: * Сначала импортируйте родительскую запись, затем повторите импорт * Исправьте ссылочное значение * Исключите строку из импорта Распространённые причины: * Неверный формат (для доменов используйте `https://domain.com`) * Несовпадение регистра (проверьте точное написание) * Родитель не существует (сначала импортируйте родителей) * Сопоставление нескольких идентификаторов (используйте только один) **Помните: записи, помеченные как удалённые, учитываются при проверке уникальности.** Если вы получаете ошибки «not found», но запись, кажется, существует, проверьте Command Menu → See deleted records. Возможно, родитель был помечен как удалённый. ## Устранение неполадок Возникли проблемы? Проверьте: * [Как исправить ошибки импорта](/l/ru/user-guide/data-migration/how-tos/fix-import-errors) * [Возможности импорта связей](/l/ru/user-guide/data-migration/capabilities/import-relations) * [Ограничения уникальности](/l/ru/user-guide/data-migration/capabilities/uniqueness-constraints)