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 3s

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,201 @@
---
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)