Files
upstream-twenty/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
upstream-mirror e7da97194a
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 3s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

243 lines
16 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: Импорт контактов через CSV
description: Полное пошаговое руководство по импорту людей/контактов в Twenty.
---
## Обзор
Это руководство проведет вас через процесс импорта ваших контактов (People) в Twenty.
## Перед началом
### Контрольный список предварительных требований
<Check>
Ваш файл в формате CSV, XLSX или XLS
</Check>
<Check>
В файле менее 10 000 записей
</Check>
<Check>
В вашем файле нет повторяющихся адресов электронной почты
</Check>
<Check>
**Компании импортированы первыми** (если вы связываете Людей с Компаниями)
</Check>
<Check>
Все пользовательские поля созданы в **Настройки → Модель данных**
</Check>
<Warning>
**Импортируйте Компании перед импортом Людей**
Если вы хотите связать Людей с Компаниями, сначала импортируйте Компании. Компания должна существовать до того, как вы сможете на неё сослаться.
</Warning>
## Шаг 1: Подготовьте данные контактов
### Обязательные и рекомендуемые поля
| Поле | Обязательно? | Формат | Заметки |
| ------------------------- | ------------- | ------------------ | ----------------------------------- |
| **Электронная почта** | Рекомендуется | `name@domain.com` | Должен быть уникальным |
| **Имя** | Рекомендуется | Текст | |
| **Фамилия** | Рекомендуется | Текст | |
| **Компания** | Необязательно | Домен или ID | Связывает с существующей Компанией |
| **Телефон** | Необязательно | Несколько столбцов | См. ниже |
| **Должность** | Необязательно | Текст | |
| **Пользовательские поля** | Необязательно | Различается | Должны существовать в модели данных |
### Формат электронной почты
* Должен быть корректный формат электронной почты: `name@domain.com`
* **Должен быть уникальным** — без дубликатов в вашем файле или в Twenty
* Для дополнительных адресов используйте столбец **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Формат телефона
Телефон — это **вложенное поле**, требующее нескольких столбцов:
| Столбец | Пример |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### Связывание с компаниями
Добавьте столбец с уникальным идентификатором компании:
| Название столбца | Формат | Пример |
| ---------------- | ---------- | -------------------------------------- |
| `companyDomain` | Формат URL | `https://acme.com` |
| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Note>
**Используйте формат URL домена** (`https://acme.com`), а не метку. Это соответствует тому, как Компании хранятся в Twenty.
</Note>
### Пример структуры CSV
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
John,Smith,john@acme.com,CEO,https://acme.com,4159095555,US
Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
<Note>
**Совет профессионала:** Нажмите **Download sample file** во время импорта или экспортируйте несколько существующих Людей, чтобы увидеть точные названия столбцов, которые ожидает Twenty.
</Note>
## Шаг 2: Откройте функцию импорта
**Вариант 1: Из представления Люди**
1. Перейдите к разделу **Люди** в левой боковой панели
2. Нажмите значок **⋮** в правом верхнем углу
3. Выберите **Импорт записей**
**Вариант 2: Через командное меню**
1. Нажмите `Cmd + K` (Mac) или `Ctrl + K` (Windows)
2. Введите "import"
3. Выберите **Импорт записей**
4. Выберите **Люди**
## Шаг 3: Загрузите свой файл
1. Нажмите **Выбрать файл**
2. Выберите свой файл CSV, XLSX или XLS
3. Подождите, пока Twenty проанализирует ваш файл
## Шаг 4: Сопоставьте ваши столбцы
Twenty автоматически пытается сопоставить ваши столбцы с полями. Проверьте и при необходимости скорректируйте:
1. **Проверьте автоматические сопоставления** — убедитесь, что они верны
2. **Исправьте неверные сопоставления** — нажмите на раскрывающийся список, чтобы выбрать нужное поле
3. **Пропустите столбцы** — выберите **Do not map** для столбцов, которые вы не хотите импортировать
### Важные правила сопоставления
| Тип столбца | Сопоставить с | Заметки |
| --------------------------------------- | ------------------------------ | --------------------------------- |
| Ссылка на Компанию | Поле связи **Компания** | Используйте домен ИЛИ id, не оба |
| Электронная почта | **Электронная почта** | Основной адрес электронной почты |
| Дополнительные адреса электронной почты | **Emails / Additional Emails** | Формат массива |
| Телефон | Отдельные столбцы | Номер, код страны, телефонный код |
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
### Сопоставление связи с Компанией
При сопоставлении столбца компании:
1. Найдите столбец ссылки на компанию (например, `companyDomain`)
2. Сопоставьте его с полем связи **Компания**
3. Twenty свяжет каждого человека с соответствующей Компанией
<Warning>
**Сопоставляйте только ОДИН уникальный идентификатор для связей.**
Не сопоставляйте одновременно `companyId` И `companyDomain`. Выберите один — предпочтительно домен, так как он понятен человеку.
</Warning>
## Шаг 5: Сопоставление значений полей Select
Если у вас есть поля Select или Multi-Select (например, Lead Source):
1. Twenty показывает ваши значения рядом с существующими вариантами
2. Сопоставьте каждое значение в вашем файле с вариантом Twenty
3. Или при необходимости создайте новые варианты
<Note>
Для вариантов Select используются **имена API**, а не отображаемые метки. Перейдите в **Настройки → Модель данных** → включите **Расширенный режим**, чтобы увидеть имена API.
</Note>
## Шаг 6: Проверьте и исправьте ошибки
Перед завершением импорта Twenty проверяет ваши данные:
1. Нажмите **Следующие шаги**
2. Строки с ошибками выделены **желтым**
3. **Исправляйте ошибки напрямую** — нажмите на ячейку и отредактируйте значение
4. **Удалите проблемные строки** — нажмите X, чтобы пропустить эту строку
### Распространенные ошибки импорта контактов
| Ошибка | Причина | Решение |
| ------------------------------------------------ | ----------------------------------------------------------- | -------------------------------------------------- |
| **Дублирующийся адрес электронной почты** | Адрес электронной почты уже существует в Twenty или в файле | Удалите дубликат или обновите существующую запись |
| **Недопустимый формат адреса электронной почты** | Неверный формат адреса электронной почты | Исправьте на `name@domain.com` |
| **Связь не найдена** | Компания не существует | Сначала импортируйте Компании или исправьте ссылку |
| **Отсутствует обязательное поле** | Обязательное поле пусто | Заполните значение или удалите строку |
## Шаг 7: Завершите импорт
1. Просмотрите сводку импорта
2. Нажмите **Подтвердить**, чтобы импортировать
3. Дождитесь завершения импорта
4. Проверьте, открыв несколько записей и их ссылки на Компанию
## После импорта контактов
Ваши контакты теперь в Twenty! Следующие шаги:
1. **Проверьте связи с Компанией** — откройте несколько записей Людей, чтобы убедиться, что они связаны с нужной Компанией
2. **Импортируйте Сделки** — при необходимости свяжите их с Людьми и Компаниями
3. **Настройте синхронизацию электронной почты** — подключите свой почтовый ящик, чтобы видеть историю писем в записях контактов
## Обновление существующих контактов
Чтобы обновлять контакты вместо создания новых:
1. Добавьте в файл столбец `email` или `id`
2. Twenty сопоставляет записи по этому уникальному идентификатору
3. Существующие контакты обновляются; новые создаются
См. [Как обновить существующие записи](/l/ru/user-guide/data-migration/how-tos/update-existing-records-via-import) для подробностей.
## Часто задаваемые вопросы
<AccordionGroup>
<Accordion title="Почему у двух Людей не может быть один и тот же адрес электронной почты?">
Адрес электронной почты — уникальный идентификатор в Twenty. Это предотвращает дубли контактов и обеспечивает корректную привязку писем к нужному контакту при синхронизации электронной почты.
</Accordion>
<Accordion title="Что делать, если у некоторых Людей нет адреса электронной почты?">
Вы можете оставить поле email пустым. Однако мы рекомендуем по возможности добавлять адреса электронной почты для лучшего качества данных и корректной работы синхронизации электронной почты.
</Accordion>
<Accordion title="Как связать Людей с Компаниями при импорте?">
Добавьте столбец с доменом Компании (например, `https://acme.com`) или ID. При сопоставлении свяжите этот столбец с полем связи с Компанией.
</Accordion>
<Accordion title="Что, если Компания еще не существует?">
Сначала импортируйте Компании, затем импортируйте Людей. Компания должна существовать до того, как вы сможете на нее сослаться.
</Accordion>
<Accordion title="Можно ли импортировать ID из предыдущей CRM?">
Да! Создайте настраиваемое поле с пометкой "уникальное" в вашей модели данных для хранения внешнего ID. Примечание: имя поля `id` зарезервировано для внутреннего ID Twenty.
</Accordion>
<Accordion title="Как исправить ошибки 'relation not found'?">
Компания, на которую вы ссылаетесь, не существует. Либо сначала импортируйте Компанию, либо проверьте, что домен/ID в точности совпадает с существующей Компанией.
</Accordion>
</AccordionGroup>
## Устранение неполадок
Возникли проблемы? Проверьте:
* [Как исправить ошибки импорта](/l/ru/user-guide/data-migration/how-tos/fix-import-errors)
* [Как импортировать связи](/l/ru/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [Справочник по сопоставлению полей](/l/ru/user-guide/data-migration/capabilities/field-mapping)