ДокументацияРуководства
Импорт файлов
Загрузка каталога, профилей, заказов и событий из CSV и Excel в кабинете: шаблоны и колонки, кодировки и даты, проверка, отчёт об ошибках, повторные загрузки.
Импорт файлов — способ передать данные без интеграции с API: выгрузка из 1С, Битрикса или таблица Excel загружается в кабинете. Каждая строка файла обрабатывается так же, как соответствующий метод API, поэтому проверки, отказы и правила идемпотентности — те же.
Когда использовать
| Задача | Чем |
|---|---|
| Первая загрузка каталога, перенос истории заказов и событий, разовая загрузка профилей | импорт файлов |
| Ежедневная синхронизация: новый объект, изменение цены, покупка, вход пользователя | API |
Файл и API можно сочетать: загрузите историю файлом, а дальше шлите изменения методами API. Повторная загрузка того же файла данные не удваивает.
Как загрузить
Проект → «Импорт».
- Выберите шаблон и загрузите файл. У каждого шаблона на странице есть описание колонок и пример файла.
- Проверьте сопоставление колонок. ДАРА сопоставляет колонки по заголовкам — подписи полей из таблиц ниже и привычные названия выгрузок 1С и Битрикса распознаются сами. Поправьте, что нужно: сопоставление сохраняется и предлагается при следующей загрузке этого шаблона.
- Запустите проверку. ДАРА показывает первые 20 строк файла и проверяет первые 1000 строк: ошибки по строкам и колонкам, предупреждения, определённые кодировку и разделитель.
- Запустите импорт. Он идёт в фоне, на странице виден прогресс: сколько строк обработано, принято и отклонено.
- Заберите итог: счётчики и отчёт об ошибках в CSV.
Один импорт в проекте одновременно. Незапущенных загрузок в проекте хранится не больше трёх: четвёртая вытесняет самую старую, и та помечается «заменён новой загрузкой». За сутки клиент загружает не больше 20 файлов.
Файлы
- CSV — кодировка UTF-8 или Windows-1251, разделитель
;,,или табуляция. И то и другое определяется автоматически, BOM учитывается. Выгрузки 1С в Windows-1251 с точкой с запятой открываются как есть, перекодировать файл не нужно. - XLSX — первый лист книги. Формулы берутся сохранённым значением: если файл сохранён без значений формул, такие ячейки считаются пустыми.
.xlsне принимается — пересохраните файл как.xlsxили CSV. Файл под паролем тоже не принимается.- Первая непустая строка — заголовок. Колонок в заголовке не больше 200.
- Размер — до 100 МБ, до 1 000 000 строк в файле.
Кодировка определяется по всему файлу. Если начало файла выглядит как UTF-8, а дальше встречаются строки в Windows-1251 (так бывает у склеенных выгрузок), импорт останавливается до записи первой строки с кодом encoding_mismatch — выберите кодировку вручную на странице проверки и запустите снова. Отдельные нечитаемые строки кодировку не меняют: они отклоняются с кодом invalid_encoding.
Даты и время
Принимаются:
ГГГГ-ММ-ДДиГГГГ-ММ-ДД ЧЧ:ММ[:СС], можно сZили смещением;ДД.ММ.ГГГГиД.М.ГГГГ, со временем или без — формат 1С14.09.2026 0:00:00читается как есть;- дата Excel — ячейка с форматом даты в XLSX.
Время без часового пояса в файле считается московским и переводится в UTC. Это отличие от API: там время без зоны отклоняется с кодом invalid_datetime. Дата без года (14.09), двузначный год и формат ММ/ДД/ГГГГ не распознаются — такая ячейка даёт invalid_date.
Значения в ячейках
- Пустая ячейка — значение не передано. В каталоге это значит «поле пустое» (строка заменяет объект целиком), в профилях — «поле не меняется»: очистить поле профиля файлом нельзя, только методом API.
- Списки (интересы, авторы, несколько медиа) — в одной ячейке через вертикальную черту:
велоспорт|походы. - Да и нет —
да,истина,true,1,yes,yинет,ложь,false,0,no,n, регистр не важен. - Числа — разделитель дробной части точка или запятая, пробелы и неразрывные пробелы внутри числа игнорируются:
1 234,50— это тысяча двести тридцать четыре с половиной. - Пробелы по краям ячейки отбрасываются, в том числе у идентификаторов: 1С и Excel часто дописывают их.
- Перечисления (тип объекта, статус заказа, пол) принимаются кодом или русским словом:
videoивидео,createdисоздан,femaleиженский. - Любую несопоставленную колонку можно записать в свойства объекта или строки заказа (
properties.<заголовок>) либо в атрибуты пользователя (attributes.<заголовок>). Колонки с персональными данными в атрибуты не предлагаются: ДАРА их не принимает. - Относительные ссылки (
/upload/iblock/…в выгрузках Битрикса) дополняются до абсолютных, если на странице проверки указан адрес сайта.
Шаблон «Каталог»
Строка файла — объект; загрузка равна PUT /items/{id}: объект заменяется целиком, поля без колонок очищаются. Загруженные объекты встают в очередь анализа, как переданные по API, и учитываются в месячном объёме анализа.
| Колонка в файле | Поле | Обязательно | Что писать |
|---|---|---|---|
| Идентификатор | id |
да | id объекта на вашей стороне — тот же, что в PUT /items/{id} |
| Тип | type |
да | video, image, audio, text или mixed; можно задать значением для всех строк |
| Заголовок | title |
одно из: Текст объекта | название объекта, до 1000 знаков |
| Описание | description |
одно из: Текст объекта | краткое описание |
| Текст | body |
одно из: Текст объекта | полный текст; в XLSX ячейка вмещает не больше 32 767 знаков |
| Автор | author |
нет | код или имя автора: по нему работают подписки и скрытые авторы |
| Ссылка | url |
нет | адрес страницы объекта |
| Дата публикации | published_at |
нет | дата или дата со временем |
| Доступен | available |
нет | нет — объект хранится, но не показывается |
| Медиа | media |
одно из: Медиа | ссылки https, несколько — списком |
| Вид медиа | media_kind |
нет | video, audio или image — одно значение на весь файл или списком по числу медиа |
| Версия медиа | media_version |
нет | ваша метка версии файла: смена версии заставляет переанализировать медиа |
У объектов типа text нужен заголовок, описание или текст; у video, audio и image — хотя бы одно медиа своего вида.
Пример: items.csv, items.xlsx.
Шаблон «Профили»
Строка файла — пользователь; загрузка равна POST /users/profile: меняются только переданные поля.
| Колонка в файле | Поле | Обязательно | Что писать |
|---|---|---|---|
| Идентификатор пользователя | user.user_id |
одно из: Пользователь | id аккаунта на вашем сайте |
| Анонимный идентификатор | user.anonymous_id |
одно из: Пользователь | id браузера или устройства, печатные символы ASCII |
| DARA Fingerprint | user.fingerprint_uuid |
одно из: Пользователь | UUID посетителя, если DARA Fingerprint подключён |
| Пол | gender |
нет | male или female |
| Год рождения | birth_year |
нет | четыре цифры |
| Возраст | age |
нет | полных лет; вместе с годом рождения не передаётся |
| Интересы | interests |
нет | список, до 50 значений |
| Исключённые интересы | excluded_interests |
нет | список тем, которые показывать не нужно |
| Подписки на авторов | followed_authors |
нет | список идентификаторов авторов |
| Скрытые авторы | hidden_authors |
нет | список идентификаторов авторов |
| Город | city |
нет | название города |
| Страна | country |
нет | название или код страны |
| Персонализация | personalization |
нет | нет — профиль не строится и не используется |
Персональные данные — имя, телефон, email, адрес, паспорт, дата рождения — не принимаются: строка получает отказ pii_not_allowed. Подробно — Данные о пользователях.
Пример: profiles.csv, profiles.xlsx.
Шаблон «Заказы»
Строка файла — строка заказа. Строки с одним номером собираются в заказ по всему файлу, поэтому порядок строк не важен, и заказ отправляется целиком, как POST /orders.
| Колонка в файле | Поле | Обязательно | Что писать |
|---|---|---|---|
| Номер заказа | order_id |
да | номер документа; строки с одним номером образуют один заказ |
| Идентификатор покупателя | user.user_id |
одно из: Покупатель | id аккаунта покупателя |
| Анонимный идентификатор | user.anonymous_id |
одно из: Покупатель | id браузера или устройства |
| DARA Fingerprint | user.fingerprint_uuid |
одно из: Покупатель | UUID посетителя |
| Дата заказа | occurred_at |
нет | дата документа; не старше 730 дней |
| Статус | status |
нет | created или cancelled; по умолчанию created |
| Товар | item |
да | id товара — тот же, что в каталоге |
| Количество | quantity |
нет | по умолчанию 1 |
| Цена | price |
нет | цена за единицу |
| Наименование | title |
нет | название товара: по нему заводится карточка, если товара нет в каталоге |
- Поля заказа — покупатель, дата, статус — берутся из первой строки заказа. Если в другой строке того же номера стоит другое непустое значение, весь заказ отклоняется с кодом
order_conflict. - Неразборчивые количество или цена («две»,
1,2,3) отклоняют свою строку с кодомinvalid_number— остальные строки заказа загружаются. - Повторная загрузка заменяет состав заказа: новые строки добавляются, пропавшие отменяются.
- Если у проекта нет активного типа события с флагом «покупка», импорт заказов не запускается: код
no_purchase_type.
Пример: orders.csv, orders.xlsx, выгрузка 1С в Windows-1251: orders-1c-cp1251.csv.
Номера документов 1С
order_id в API — до 64 печатных символов ASCII, а номера документов 1С выглядят как ЦБ-000123 или ТД00-000045. Номер, в котором есть символы вне печатного ASCII, переводится в ключ заказа: транслитерация номера, знак ~ и восемь шестнадцатеричных знаков хеша исходного номера.
ЦБ-000123 → TSB-000123~0a191c24
Ключ получается одинаковым у CSV в Windows-1251, CSV в UTF-8 и XLSX, поэтому повторная загрузка того же файла в другом формате заказ не удваивает. Этот ключ и есть order_id заказа в API: GET-сверка, POST /orders и события покупок работают с ним. Номер из файла сохраняется рядом и виден в кабинете.
Транслитерация — как в загранпаспортах (ICAO Doc 9303), заглавными буквами:
| Буква | Латиницей | Буква | Латиницей |
|---|---|---|---|
| А | A | Р | R |
| Б | B | С | S |
| В | V | Т | T |
| Г | G | У | U |
| Д | D | Ф | F |
| Е | E | Х | KH |
| Ё | E | Ц | TS |
| Ж | ZH | Ч | CH |
| З | Z | Ш | SH |
| И | I | Щ | SHCH |
| Й | I | Ъ | IE |
| К | K | Ы | Y |
| Л | L | Ь | не пишется |
| М | M | Э | E |
| Н | N | Ю | IU |
| О | O | Я | IA |
| П | P |
Номера, повторяющиеся по годам. В 1С нумерация документов часто начинается заново каждый год, и ЦБ-000123 за 2025 и 2026 год — разные заказы. Отметьте на странице проверки «Номера документов повторяются по годам»: к ключу добавится год даты заказа (TSB-000123~0a191c24@2025). Без отметки такие строки соберутся в один заказ и, скорее всего, отклонятся с кодом order_conflict — проверка предупреждает об этом кодом order_id_repeats_by_year.
То же преобразование применяется к колонке «Номер заказа» шаблона «События»: покупка из выгрузки событий и заказ из выгрузки заказов с одним номером получают один ключ. Отметка «Номера документов повторяются по годам» есть и у шаблона «События» — обе выгрузки загружайте с одинаковой отметкой, иначе ключи разойдутся и одна покупка учтётся дважды; строка с номером заказа, но без даты, при этой отметке отклоняется.
Шаблон «События»
Строка файла — событие; загрузка равна POST /events.
| Колонка в файле | Поле | Обязательно | Что писать |
|---|---|---|---|
| Идентификатор события | id |
нет | ваш id события: по нему отбрасываются повторы |
| Тип события | type |
да | код типа из проекта или его название; можно задать значением для всех строк |
| Объект | item |
да | id объекта из каталога |
| Идентификатор пользователя | user.user_id |
одно из: Пользователь | id аккаунта |
| Анонимный идентификатор | user.anonymous_id |
одно из: Пользователь | id браузера или устройства |
| DARA Fingerprint | user.fingerprint_uuid |
одно из: Пользователь | UUID посетителя |
| Значение | value |
нет | значение события: доля досмотра, оценка, да или нет — по виду значения типа |
| Время события | occurred_at |
нет | время действия; не старше 730 дней |
| Идентификатор выдачи | recommendation_id |
нет | recommendation_id выдачи или поиска, если событие пришло оттуда |
| Поверхность | surface |
нет | место показа: feed, search и подобные |
| Позиция | position |
нет | позиция объекта в выдаче, с 0 |
| Номер заказа | order_id |
нет | номер заказа для событий покупки |
| Количество | quantity |
нет | количество в покупке |
| Цена | price |
нет | цена в покупке |
- Без колонки идентификатора повтор события узнаётся по хешу строки: те же поля — то же событие, повторная загрузка файла счётчики не удваивает.
- Показы файлом не загружаются: строки типов с флагом «показ» отклоняются с кодом
impression_not_importable. Дедупликация показов рассчитана на двое суток, и загрузка того же файла позже удвоила бы статистику. - Без колонки даты строки записываются временем загрузки — проверка предупреждает об этом кодом
no_occurred_at. - События покупки, чьи заказы переданы шаблоном «Заказы» или методом заказов, отклоняются с кодом
order_managed: один заказ — один способ.
Пример: events.csv, events.xlsx. В примере покупка ссылается на номер ЦБ-000301 — он не встречается в примере выгрузки 1С, поэтому оба примера можно загрузить в один проект.
Проверка и отчёт об ошибках
Проверка разбирает первые 1000 строк файла и останавливается раньше, если результат перестаёт помещаться — по объёму (8 МБ) или по времени (17 секунд). Тогда появляется предупреждение check_partial: проверена часть строк. На странице показываются первые 200 ошибок и сводка по кодам; остальные ошибки видны в отчёте после импорта.
Отчёт — файл report.csv со страницы импорта: UTF-8 с BOM, разделитель ;, перевод строки CRLF, заголовок Строка;Колонка;Код;Ошибка. Он открывается в Excel двойным щелчком.
- «Строка» — номер строки файла, как его показывает Excel.
- «Колонка» — заголовок колонки; у XLSX перед заголовком стоит её буква. Пусто — ошибка относится ко всей строке.
- «Код» и «Ошибка» — код из таблиц ниже и его текст по-русски.
- Значений ячеек в отчёте нет: файл есть у вас, а в отчёте могли бы оказаться персональные данные.
- В отчёт попадает не больше 1 000 000 строк.
Коды: файл и проверка
Такая ошибка останавливает импорт целиком: ни одна строка не записывается.
| Код | Что означает |
|---|---|
csv_unclosed_quote |
Незакрытая кавычка: запись продолжается до конца файла |
disk_full |
Недостаточно места на сервере для разбора файла, попробуйте позже |
encoding_mismatch |
Кодировка файла определилась по началу неверно: выберите её вручную на странице проверки |
encrypted |
Файл защищён паролем: снимите пароль и сохраните файл как .xlsx |
file_changed |
Файл импорта изменился после загрузки: загрузите его заново |
file_missing |
Файл импорта не найден: загрузите его заново |
mapping_invalid |
Сопоставление колонок не подходит к файлу: выберите колонки заново |
no_header |
В файле нет строки заголовка |
no_purchase_type |
В проекте нет активного типа события с флагом «покупка» |
preview_timeout |
Проверка файла не уложилась в 20 секунд |
preview_too_large |
Результат проверки файла слишком большой |
project_inactive |
Проект в архиве или доступ клиента приостановлен |
required_unmapped |
Не сопоставлено обязательное поле: выберите колонку или значение для всех строк |
too_many_columns |
В заголовке больше 200 колонок |
too_many_rows |
В файле больше строк, чем разрешено загрузить за раз (1 000 000) |
unsupported_format |
Формат файла не поддерживается: загрузите CSV или XLSX |
utf16_not_supported |
CSV в кодировке UTF-16 не поддерживается: сохраните как «CSV UTF-8» или «CSV (разделители — точка с запятой)» |
xls_not_supported |
Файлы .xls не поддерживаются: сохраните файл как .xlsx или CSV |
xml_doctype |
Файл XLSX содержит объявление DOCTYPE, которого не бывает в файлах Excel |
xml_invalid |
Файл XLSX содержит повреждённый XML |
zip_invalid |
Файл XLSX повреждён или устроен не так, как файлы Excel |
zip_suspicious |
Файл XLSX распаковывается в подозрительно большой объём |
Коды: разбор строки
| Код | Что означает |
|---|---|
bad_row |
Число значений в строке не совпадает с заголовком или есть значения правее последней колонки заголовка |
empty_profile |
В строке нет полей профиля: профиль не изменён |
excel_error |
В ячейке ошибка Excel |
impression_not_importable |
Показы файлом не загружаются |
invalid_bool |
Ожидается да или нет (true/false, 1/0) |
invalid_date |
Дата не распознана: ожидается ГГГГ-ММ-ДД, ДД.ММ.ГГГГ (можно со временем) или дата Excel |
invalid_encoding |
Строка не читается в выбранной кодировке |
invalid_number |
Не число |
invalid_value |
Недопустимое значение |
order_conflict |
Поля заказа отличаются в строках одного номера |
required |
Пустое обязательное значение |
too_large |
Свойства или атрибуты строки больше 16 КБ |
too_long |
Значение длиннее допустимого |
too_many |
В заказе больше строк или товаров, чем допустимо |
Строки с кодом empty_profile считаются принятыми: это пометка, а не отказ.
Коды: отказ при записи
Те же коды, что у методов API: Объекты, События и заказы, Данные о пользователях, Ошибки и лимиты.
| Код | Что означает |
|---|---|
conflict |
Возраст и год рождения переданы вместе |
forbidden_host |
Адрес ведёт во внутреннюю сеть |
inactive_type |
Тип события выключен |
invalid_datetime |
Неверная дата |
invalid_property_type |
Фильтруемое свойство другого типа |
invalid_scheme |
Недопустимая схема адреса |
invalid_type |
Значение другого типа |
invalid_url |
Неверный адрес |
invalid_user |
Неверный идентификатор пользователя |
media_not_allowed |
У текстового объекта медиа не передаются |
media_required |
Нет медиа нужного вида |
no_user |
Пользователь не определён: нужен user_id или anonymous_id |
order_managed |
Событие покупки заказа, переданного методом заказов |
pii_not_allowed |
Персональные данные не принимаются |
text_required |
У текстового объекта нужен заголовок, описание или текст |
too_deep |
Слишком глубокая вложенность |
too_old |
Старше 730 дней |
unknown_field |
Неизвестное поле |
unknown_item |
Объекта нет в каталоге проекта |
unknown_type |
Тип события не найден в проекте |
Предупреждения проверки
Не мешают запуску, но стоит прочитать.
| Код | Что означает |
|---|---|
all_checked_rows_failed |
Все проверенные строки отклонены: запуск — только с подтверждением |
analysis_queue_estimate |
Будет поставлено в анализ объектов |
check_partial |
Проверена только часть строк: результат проверки ограничен по объёму или времени |
encoding_mixed |
В файле есть строки в разных кодировках |
formula_without_value |
У формул нет сохранённого значения: ячейки считаются пустыми |
impressions_present |
Строки показов не загружаются файлом |
no_occurred_at |
Колонка даты не сопоставлена: строки будут записаны временем загрузки |
order_id_converted |
Номера заказов не из латиницы и цифр переведены в ключи заказов |
order_id_repeats_by_year |
Один номер документа встречается в разных годах: отметьте «Номера документов повторяются по годам» |
order_partial_in_check |
Заказ продолжается за проверенными строками и проверен частично |
rows_estimate_over_limit |
В файле больше строк, чем разрешено загрузить за раз |
too_old_share |
Строки старше 730 дней будут отклонены |
undelete_count |
Будет восстановлено удалённых объектов |
Итог импорта
| Код | Что означает |
|---|---|
expired |
Импорт не завершился за 8 дней после загрузки |
files_deleted |
Файлы импорта удалены |
import_running |
В проекте уже идёт импорт: дождитесь окончания или отмените его |
import_started |
Сопоставление запущенного импорта не меняется |
invalid_state |
Действие недоступно в текущем состоянии импорта |
job_failed |
Задание импорта завершилось с ошибкой |
reader_failed |
Разбор файла несколько раз завершился сбоем |
superseded |
Заменён новой загрузкой |
too_many_checks |
Слишком много проверок файла подряд: повторите через минуту |
Паузы
Импорт уступает дорогу выдаче и анализу и на время встаёт на паузу; причина видна на странице импорта.
| Код | Что означает |
|---|---|
analysis_queue |
Пауза: очередь анализа проекта переполнена |
api_latency |
Пауза: высокая нагрузка на выдачу |
db_slow |
Пауза: база данных отвечает медленно |
Повторная загрузка, сбой, отмена
- Повторная загрузка не удваивает данные: объекты узнаются по идентификатору, заказы — по ключу заказа и товару, события — по идентификатору или хешу строки, профили заменяют переданные поля.
- Строки пишутся пачками по 500 строк или 8 МБ данных — что раньше. Если импорт прервался — сбой, перезапуск службы, отмена, — записанное остаётся, а «Продолжить» на странице импорта дочитывает файл с последней подтверждённой строки.
- «Продолжить» использует сохранённое сопоставление. Оно не меняется после первой записанной строки: иначе часть файла пришла бы по одним колонкам, а часть — по другим. Нужны другие колонки — загрузите файл заново.
- Отмена останавливает импорт на ближайшей пачке. Уже записанные строки остаются: отката событий и заказов нет.
Хранение
- Файл и отчёт удаляются через 7 дней после загрузки. «Продолжить» срок не продлевает.
- Исходный файл удаляется сразу после успешного импорта; отчёт живёт до конца срока.
- После удаления файлов история загрузки остаётся, а «Продолжить» и отчёт — нет.
- Суммарный объём файлов импорта одного клиента — до 1 ГБ. Когда он исчерпан, новая загрузка не принимается: отмените незапущенные импорты или дождитесь удаления старых файлов.
- Если на сервере мало свободного места, загрузка временно отклоняется с просьбой повторить позже — импорт не занимает место, нужное базе данных.