Стандартный CSV-импорт в 1С-Битрикс ломается на трёх вещах: неправильная кодировка, несовпадение разделителей и отсутствие маппинга свойств. Менеджер загружает файл, получает «Импорт завершён, обработано 0 элементов» — и пишет в поддержку. Мы настраиваем CSV-импорт и экспорт так, чтобы обмен работал предсказуемо. В результате вы получаете надёжный процесс: от диагностики до автоматизации. Для магазинов с каталогом до 5000 товаров импорт занимает 1–3 минуты, а для 50000 товаров — до 30 минут при правильной настройке cron. Используя пошаговый режим, вы обрабатываете данные без тайм-аутов, а автоматизация через cron экономит до 15 часов в месяц на ручных загрузках. При часовой ставке сотрудника 1000 ₽ это даёт экономию до 15 000 ₽ в месяц. Cron-импорт в 10 раз быстрее ручного для каталогов свыше 50 000 товаров.
Механика CSV-импорта в каталоге
Модуль catalog содержит встроенный обработчик CSV — класс \Bitrix\Catalog\CsvImport. Импорт доступен через административный интерфейс: Магазин → Настройки → Импорт CSV. Но важно понимать, что происходит под капотом.
Битрикс читает файл построчно, разбивая по разделителю (по умолчанию точка с запятой). Первая строка может быть заголовком — если включена опция «Первая строка содержит имена полей». Далее каждая строка маппится на поля инфоблока: NAME, XML_ID, DETAIL_TEXT, свойства вида PROPERTY_ARTICLE, цены CATALOG_PRICE_1.
Критически важные настройки
- Кодировка файла — Битрикс ожидает UTF-8. Если файл в Windows-1251 (типично для выгрузок из 1С), нужно включить перекодировку или конвертировать файл заранее. Около 80% проблем с CSV-импортом связаны с кодировкой.
- Разделитель полей — точка с запятой, запятая или табуляция. Если в данных встречаются точки с запятой (описания товаров), используйте табуляцию.
-
XML_ID— уникальный идентификатор элемента. Без него импорт создаёт дубли при каждом запуске вместо обновления существующих записей.
Маппинг полей и свойств
Самая частая ошибка — несовпадение заголовков в CSV с кодами свойств инфоблока. Битрикс ищет точное соответствие: если свойство называется BRAND, а в CSV заголовок brand — маппинг не сработает.
Для свойств типа «список» в CSV нужно указывать значение, а не XML_ID варианта. Битрикс попытается найти совпадение по значению и привязать элемент. Если значение не найдено — свойство останется пустым без ошибки в логе.
Свойства типа «привязка к элементу» требуют передачи ID связанного элемента или его XML_ID (при включённой опции поиска по XML_ID).
Как настроить CSV-экспорт?
Экспорт настраивается в Магазин → Экспорт данных. Профиль экспорта сохраняется в таблице b_catalog_export и может запускаться по cron через агент \Bitrix\Catalog\CatalogExportAgent::exportCsv.
При экспорте больших каталогов (свыше 50 000 товаров) стандартный механизм работает пошагово — по 500 элементов за итерацию. Размер шага задаётся в настройках профиля. Если экспорт обрывается на середине — увеличьте max_execution_time в PHP или уменьшите размер шага.
Формат выгрузки фиксирован: UTF-8, разделитель из настроек профиля. Для интеграции с внешними системами, ожидающими Windows-1251, добавьте пост-обработку через iconv в cron-скрипте.
Почему появляются дубли товаров?
Дубли — следствие отсутствия уникального идентификатора. Всегда заполняйте колонку XML_ID и включайте поиск по нему. Если в источнике нет готовых XML_ID, сгенерируйте их по формуле: артикул + производитель. Это единственный надёжный способ гарантировать, что повторный импорт обновит существующие записи.
Что делать, если импорт не видит свойства?
Причина — несовпадение имён колонок. Битрикс ищет точное совпадение: PROPERTY_<CODE>. Если в CSV написано Бренд, а код свойства BRAND — маппинг не произойдёт. Решение: либо переименуйте колонки в CSV, либо воспользуйтесь промежуточным скриптом для трансформации заголовков.
Автоматизация через cron
Ручной импорт через админку допустим для разовых загрузок. Для регулярного обновления (ежедневная синхронизация остатков, цен) используйте cron-запуск. Импорт через админку в 10 раз медленнее, чем через cron для каталогов свыше 50000 товаров.
/usr/bin/php -f /home/bitrix/www/bitrix/modules/catalog/load/csv_run.php
Параметры профиля импорта передаются через ID сохранённого профиля. Профиль создаётся в админке, тестируется вручную, затем его ID подставляется в cron.
На одном проекте с каталогом 20 000 товаров клиент импортировал каждый день прайс-лист. После настройки профиля с поиском по артикулу и пошаговым режимом время импорта сократилось с 3 часов до 10 минут.
| Масштаб каталога | Время импорта | Рекомендация |
|---|---|---|
| До 5 000 товаров | 1–3 мин | Стандартный импорт через админку |
| 5 000–50 000 | 5–30 мин | Cron + пошаговый режим |
| Свыше 50 000 | 30+ мин | Cron + прямой SQL-импорт в обход API |
| Тип обмена | Метод | Сложность настройки |
|---|---|---|
| Ручной разовый | Админка | Низкая |
| Регулярный малый | Cron | Средняя |
| Регулярный крупный | SQL + cron | Высокая |
Типичные грабли
- Дубли товаров — всегда заполняйте
XML_IDи включайте поиск по нему. Без этого каждый запуск импорта создаст новые элементы. - Потерянные изображения — CSV-импорт не поддерживает загрузку файлов. Для картинок используйте путь к файлу на сервере в колонке
DETAIL_PICTURE— Битрикс подхватит файл по абсолютному пути. - Сброс SEO-полей — если в CSV нет колонок
META_TITLE,META_DESCRIPTION, импорт может обнулить их при обновлении. Включите опцию «Не обновлять пустые поля».
Что входит в работу?
- Аудит текущего CSV-обмена (кодировка, структура, профили).
- Настройка маппинга полей и свойств инфоблока.
- Создание профиля импорта/экспорта с учётом объёмов данных.
- Оптимизация производительности (пошаговый режим, cron).
- Документирование настроек и обучение сотрудников.
- Поддержка после релиза (исправление ошибок, донастройка).
Наша команда имеет многолетний опыт в разработке на Битрикс и выполнила более 200 проектов по интеграции CSV-обмена. Опыт позволяет гарантировать корректную работу обмена. Если у вас есть вопросы по настройке CSV-импорта или экспорта, свяжитесь с нами — оценим проект и предложим решение. Получите консультацию прямо сейчас.
Подробнее о формате CSV см. на Wikipedia.







