Files
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

202 lines
12 KiB
Plaintext
Raw Permalink 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.
---
## Обзор
Это руководство проведет вас через процесс импорта ваших компаний в Twenty. **Компании следует импортировать в первую очередь**, поскольку Люди и Сделки связываются с Компаниями.
## Перед началом
### Контрольный список предварительных требований
<Check>
Ваш файл в формате CSV, XLSX или XLS
</Check>
<Check>
В файле менее 10 000 записей
</Check>
<Check>
В вашем файле нет повторяющихся доменов
</Check>
<Check>
Все пользовательские поля созданы в **Настройки → Модель данных**
</Check>
<Note>
Нужно импортировать более 10 000 компаний? Разбейте на несколько файлов или используйте [импорт через API](/l/ru/user-guide/data-migration/how-tos/import-data-via-api).
</Note>
## Шаг 1: Подготовьте данные о компаниях
### Обязательные и рекомендуемые поля
| Поле | Обязательно? | Формат | Заметки |
| ------------------------- | ------------- | -------------------- | ----------------------------------- |
| **Название** | Рекомендуется | Текст | Отображаемое название компании |
| **Домен** | Рекомендуется | `https://domain.com` | Уникальный идентификатор |
| **Адрес** | Необязательно | Несколько столбцов | См. ниже |
| **Сотрудники** | Необязательно | Число | Количество сотрудников |
| **Пользовательские поля** | Необязательно | Различается | Должны существовать в модели данных |
### Формат домена
<Warning>
**Используйте формат `https://domain.com` для доменов.**
Это соответствует формату, используемому, когда Компании автоматически создаются при синхронизации почты/календаря, что предотвращает появление дубликатов в дальнейшем.
</Warning>
**Столбцы домена:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
### Формат адреса
Адрес — это вложенное поле с несколькими столбцами:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
### Пример структуры CSV
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
Acme Corp,https://acme.com,acme.com,San Francisco,USA,250
Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
<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** для столбцов, которые вы не хотите импортировать
### Важные правила сопоставления
* **Домен**: сопоставьте с **Domain / Domain URL** (не с Domain Label)
* **Адрес**: сопоставьте каждую часть с соответствующим столбцом (City, State и т. д.)
* **Поля Select**: значения должны соответствовать существующим вариантам (или вы сопоставите их на следующем шаге)
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
## Шаг 5: Сопоставление значений полей Select
Если у вас есть поля Select или Multi-Select:
1. Twenty показывает ваши значения рядом с существующими вариантами
2. Сопоставьте каждое значение в вашем файле с вариантом Twenty
3. Или при необходимости создайте новые варианты
<Note>
Для вариантов Select используются **имена API**, а не отображаемые метки. Перейдите в **Настройки → Модель данных** → включите **Расширенный режим**, чтобы увидеть имена API.
</Note>
## Шаг 6: Проверьте и исправьте ошибки
Перед завершением импорта Twenty проверяет ваши данные:
1. Нажмите **Следующие шаги**
2. Строки с ошибками выделены **желтым**
3. **Исправляйте ошибки напрямую** — нажмите на ячейку и отредактируйте значение
4. **Удалите проблемные строки** — нажмите X, чтобы пропустить эту строку
### Распространенные ошибки импорта компаний
| Ошибка | Причина | Решение |
| --------------------------------- | ----------------------------- | ------------------------------------------------- |
| **Дублирующийся домен** | Домен уже существует в Twenty | Удалите из файла или обновите существующую запись |
| **Недопустимый формат домена** | Неверный формат | Используйте `https://domain.com` |
| **Отсутствует обязательное поле** | Обязательное поле пусто | Заполните значение или удалите строку |
## Шаг 7: Завершите импорт
1. Просмотрите сводку импорта
2. Нажмите **Подтвердить**, чтобы импортировать
3. Дождитесь завершения импорта
4. Проверьте, просмотрев несколько записей
## После импорта компаний
Теперь вы можете импортировать записи, которые привязываются к Компаниям:
1. **[Импортируйте Людей](/l/ru/user-guide/data-migration/how-tos/import-contacts-via-csv)** — привяжите их к Компаниям с помощью домена
2. **Импортируйте Сделки** — свяжите их с Компаниями
3. **Проверьте импорт** — выборочно просмотрите несколько записей, чтобы убедиться в корректности данных
## Обновление существующих компаний
Чтобы обновлять компании вместо создания новых:
1. Добавьте в файл столбец `domain` или `id`
2. Twenty сопоставляет записи по этому уникальному идентификатору
3. Существующие компании обновляются; новые создаются
См. [как обновить существующие записи](/l/ru/user-guide/data-migration/how-tos/update-existing-records-via-import) для подробностей.
## Часто задаваемые вопросы
<AccordionGroup>
<Accordion title="Почему две компании не могут иметь одинаковый домен?">
Домен — уникальный идентификатор в Twenty. Это предотвращает дубли компаний и обеспечивает корректную привязку писем к нужной компании при синхронизации электронной почты.
</Accordion>
<Accordion title="Что делать, если у некоторых компаний нет домена?">
Вы можете оставить домен пустым. Однако мы рекомендуем по возможности добавлять домены для улучшения качества данных и автоматической привязки писем.
</Accordion>
<Accordion title="Могу ли я импортировать компании без связанных контактов?">
Да! Сначала вы можете импортировать компании, а позже импортировать контакты и связать их с помощью домена компании.
</Accordion>
<Accordion title="Что произойдет, если я импортирую домен, который уже существует?">
Если вы укажете уникальный идентификатор (домен или id), который совпадает с существующей компанией, Twenty обновит эту компанию вместо создания дубликата.
</Accordion>
<Accordion title="Как исправить ошибки 'duplicate domain'?">
Либо удалите дубликат из вашего файла, либо добавьте `id` компании, чтобы вместо этого обновить существующую запись.
</Accordion>
</AccordionGroup>
## Устранение неполадок
Возникли проблемы? Проверьте:
* [Как исправить ошибки импорта](/l/ru/user-guide/data-migration/how-tos/fix-import-errors)
* [Справочник по сопоставлению полей](/l/ru/user-guide/data-migration/capabilities/field-mapping)
* [Ограничения уникальности](/l/ru/user-guide/data-migration/capabilities/uniqueness-constraints)