Качество импорта в 1С-Битрикс на 90% определяется тем, как подготовлен CSV-файл. Штатный инструмент «Загрузка данных из файла CSV» нетребователен к формату, но именно из-за этого прощает мусор в данных: кривая кодировка, лишние разделители и неверная структура колонок превращаются в дубли товаров и битые свойства. Разберём, как собрать файл так, чтобы импорт прошёл с первого раза.
Что за инструмент и когда он уместен
В 1С-Битрикс за загрузку данных из плоских файлов отвечает модуль Информационные блоки (iblock). Инструмент находится в списке элементов инфоблока: Контент → Инфоблоки → тип → инфоблок → Импорт → CSV, технически это страница /bitrix/admin/csv_import.php. Он умеет создавать и обновлять элементы и разделы, заполнять базовые поля и свойства.
CSV-импорт хорош, когда каталог приходит из внешней системы, у которой нет обмена по CommerceML: выгрузка от поставщика, экспорт из Excel-прайса, перенос со старой CMS. Если же источник — 1С, правильнее настраивать обмен по CommerceML, а CSV использовать как разовый или вспомогательный канал.
catalog) через штатный CSV полноценно не заводятся — под них выделяют отдельное свойство или обновляют смежным механизмом.Структура файла: какие колонки нужны
Файл — это таблица, где каждая строка равна одному товару (или разделу), а колонки — полям инфоблока. Первую строку удобно сделать строкой заголовков: при настройке импорта вы вручную сопоставите колонки с полями, а подписи помогут не запутаться.
Минимально осмысленный набор колонок для товара:
- Название — поле
NAME, обязательное; - Символьный код —
CODE, латиницей, служит человекочитаемым URL и удобным ключом обновления; - Внешний код / артикул —
XML_IDили отдельное свойство; именно по нему при повторном импорте элементы обновляются, а не дублируются; - Раздел — путь к категории каталога;
- Активность —
ACTIVE(Y/N), сортировка, детальный и анонсовый текст; - Свойства — бренд, цвет, размер, артикул и прочие характеристики.
Держите колонки в одном и том же порядке во всех выгрузках — тогда сохранённая конфигурация импорта подойдёт для следующих файлов без переназначения полей.
Кодировка, разделители и ограничители
Три параметра формата, из-за которых чаще всего рассыпается импорт, — кодировка, разделитель полей и ограничитель строк. Их нужно знать заранее и указать в мастере импорта ровно так, как они в файле.
| Параметр | Как задать | Частая ошибка |
|---|---|---|
| Кодировка | UTF-8 (без BOM) или Windows-1251 — под кодировку сайта | «Крякозябры» в названиях из-за расхождения кодировок |
| Разделитель полей | Точка с запятой ; или табуляция | Запятая как разделитель ломает дробные цены 1,5 |
| Ограничитель | Двойная кавычка " вокруг текстовых полей | Перенос строки в описании рвёт запись на две |
| Разделитель значений | Отдельный символ для множественных свойств | Совпадает с разделителем полей → всё в одной колонке |
Разделы и вложенность каталога
CSV-импорт умеет раскладывать товары по разделам и создавать недостающие категории на лету. Есть два рабочих подхода. Первый — колонка с путём раздела, где уровни вложенности разделены выбранным символом, например Обувь > Мужская > Ботинки. Битрикс разберёт цепочку и привяжет товар к последнему уровню, попутно создав промежуточные разделы.
Второй подход — смешанные строки, где часть строк описывает разделы, а часть — элементы; в мастере задаётся признак, по которому строка считается разделом. Он гибче для сложных деревьев, но и заметно капризнее в подготовке.
- Определитесь с глубиной дерева и зафиксируйте разделитель уровней;
- Убедитесь, что названия разделов написаны единообразно — «Аксессуары» и «аксессуары» создадут два разных раздела;
- Проверьте, что у товара указан полный путь, а не только конечная категория.
Свойства, множественные значения и изображения
Каждое свойство инфоблока — это отдельная колонка. Для множественных свойств (несколько цветов, набор тегов) значения в ячейке разделяют тем самым «разделителем значений», который не должен совпадать с разделителем полей. Свойства типа «список» лучше заранее завести в инфоблоке: если импорт создаёт значения справочника автоматически, легко получить дубли вариантов из-за лишних пробелов и регистра.
С изображениями работает правило: картинка — это путь, а не сама картинка. В ячейке указывается путь к файлу, который уже лежит на сервере (например, /upload/import/img/art-1024.jpg) либо доступен по URL. Поэтому изображения выкладывают на сервер до импорта, а в CSV кладут ссылки на них.
art-1024.jpg. Тогда колонку с путём легко собрать формулой из колонки артикула, не сверяя вручную сотни строк.Очистка и валидация перед загрузкой
Файл от поставщика почти всегда содержит мусор, который штатный импорт молча проглотит и превратит в проблемы каталога. Прогоните данные по короткому чек-листу до запуска:
- Уникальность ключа. Проверьте, что артикул/внешний код не повторяется — дубли по ключу дадут перезапись или лишние карточки;
- Пробелы и регистр. Уберите двойные и хвостовые пробелы, приведите к единому виду бренды и разделы;
- Числа. Единый десятичный разделитель, без разрядов-пробелов в цифрах;
- Пустые обязательные поля. Строки без NAME не загрузятся;
- Символы разметки. В описаниях уберите разделитель и ограничитель или экранируйте их кавычками.
Перед боевым импортом сделайте пробную загрузку на 10–20 строк и проверьте результат в списке элементов: раскладку по разделам, кодировку названий, подтянувшиеся картинки и свойства. Дешевле переделать образец, чем чистить весь каталог после массового импорта.
Подводные камни больших файлов
Крупные выгрузки упираются не в формат, а в ресурсы сервера. Импорт нескольких десятков тысяч строк с изображениями способен уткнуться в лимит времени выполнения PHP или память. Штатный мастер обрабатывает файл порциями, но и это не всегда спасает на слабом хостинге.
- Дробите большой CSV на файлы по несколько тысяч строк — так проще ловить и локализовать ошибки;
- Держите картинки в подпапках
/upload/, а не грузите их порознь через тот же файл; - Для регулярных загрузок сохраняйте конфигурацию сопоставления полей и запускайте её на однотипных файлах.
Итог
Подготовка CSV сводится к трём вещам: правильная структура колонок под поля инфоблока, согласованные кодировка и разделители, а также вычищенные данные с уникальным ключом обновления. Если файл собран аккуратно, штатный импорт 1С-Битрикс отрабатывает предсказуемо, а повторные загрузки обновляют каталог, а не плодят дубли.
Когда каталог большой, источников несколько или к CSV примешиваются торговые предложения, цены и остатки, мы в B2Bsite настраиваем импорт и обмен под конкретный проект: собираем корректный формат выгрузки, профили импорта и автоматизацию, чтобы каталог обновлялся без ручного труда и сюрпризов.
Частые вопросы
Какую кодировку выбрать для CSV в Битрикс?
Кодировку файла нужно согласовать с кодировкой сайта — обычно это UTF-8 без BOM или Windows-1251. Главное, чтобы в мастере импорта была указана та же кодировка, что и в самом файле.
Почему после импорта в названиях появляются «крякозябры»?
Это расхождение кодировок: файл в одной кодировке, а импорт настроен на другую. Пересохраните CSV в нужной кодировке или укажите верную кодировку в настройках загрузки.
По какому полю импорт обновляет товары, а не создаёт дубли?
По ключу, который вы назначите при настройке — обычно это внешний код, артикул или символьный код. Если ключ не задать или он не уникален, повторный импорт создаст новые карточки.
Можно ли загрузить изображения прямо из CSV?
В ячейке указывается путь к файлу или URL, а не само изображение. Картинки заранее выкладывают на сервер, например в /upload/, и ссылаются на них из файла.
Как в CSV передать несколько значений одного свойства?
Значения множественного свойства перечисляют в одной ячейке через «разделитель значений». Он обязательно должен отличаться от разделителя полей, иначе данные съедут по колонкам.
Создаст ли импорт разделы каталога автоматически?
Да. Если указать путь раздела с разделителем уровней, Битрикс создаст недостающие категории и привяжет товар к конечной. Следите за единообразием названий, чтобы не плодить похожие разделы.
Подходит ли CSV-импорт для цен и остатков каталога?
Штатный CSV грузит данные в инфоблок, а цены и остатки модуля catalog через него полноценно не заводятся. Под них выделяют свойство или используют отдельный механизм обновления.
Что делать с очень большим файлом?
Разбейте его на части по несколько тысяч строк и загружайте порциями. Так проще уложиться в лимиты сервера по времени и памяти и локализовать возможные ошибки.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.