Парсинг Excel в Битрикс: почему импорт ломается
Парсинг Excel в Битрикс выглядит как задача на вечер: прочитать таблицу, сопоставить колонки, записать в каталог. В эксплуатации ломается не код, а качество файла — поставщик переставляет шапку, добавляет строку-разделитель, склеивает колонки, и импорт excel в битрикс молча заливает в каталог нули вместо цен.
Первый типовой сбой — рассинхрон цен и остатков. Если обновление каталога идёт двумя независимыми проходами, между ними остаётся окно, когда товар продаётся по старой цене при уже нулевом остатке: покупатель оформляет заказ, которого физически нет.
Второй — дубли позиций. Артикул с пробелом, неразрывным пробелом или в другом регистре создаёт новую карточку, потому что сопоставление идёт по сырой строке, а не по нормализованному внешнему коду. Каталог распухает, свойства и остатки размазываются по копиям.
Третий — обрыв выгрузки на середине. Скрипт упирается в лимит времени выполнения: часть товаров обновилась, часть осталась со старыми ценами, а ошибки загрузки CSV никто не разбирает построчно — расхождение всплывает уже по жалобам клиентов.
Разбираем, как это закрывается: нормализация ключей до сопоставления, запись одной операцией и проверка файла до старта — именно так автоматический импорт прайса перестаёт зависеть от аккуратности поставщика.
Что даёт автоматический импорт: время, ошибки, контроль
Ручная загрузка прайса выглядит безобидно, пока каталог измеряется сотнями позиций. На тысячах строк появляются расхождения в ценах, потерянные артикулы и дубли, а остатки в карточке расходятся с фактическими — заказ отменяется уже после подтверждения.
Автоматический импорт товаров снимает эту работу с менеджера: файл Excel или CSV забирается по расписанию, строки сопоставляются по артикулу и коду поставщика, изменения применяются к каталогу 1С-Битрикс пакетами. Обновление каталога по расписанию — ночью или каждые полчаса — держит цены и наличие актуальными без участия человека, а сокращение ручной работы видно по доле позиций, которые вообще не требуют правки.
Отдельный эффект — сверка остатков. Вместо разовой выгрузки система сравнивает складские данные построчно, помечает расхождения и по заданному правилу обнуляет или скрывает отсутствующие товары. Уходит целый класс отказов: продажа позиции, которой нет на складе, и возврат, который съедает доверие клиента.
Контроль остаётся за человеком: журнал импорта фиксирует, сколько строк пришло, сколько обновлено, сколько отклонено и по какой причине. Разбор занимает минуты и касается только спорных записей, а не всего файла целиком.
Форматы источников: Excel, CSV и выгрузки из учёта
Источник определяет не только формат разбора, но и то, как часто к задаче придётся возвращаться. Excel удобен, когда структуру ведёт человек: колонки переименовывают, добавляют строки-разделители и объединённые ячейки. Импорт CSV предсказуемее — это плоский текст, но кодировка и разделитель ломают загрузку не реже, чем ошибки в самих данных.
Выгрузка из 1С снимает ручной труд, однако её схема живёт по правилам учёта: реквизиты, справочники и единицы измерения приходят такими, какими их принято хранить, а не такими, какими их ждёт каталог. Поэтому сначала мы фиксируем структуру таблицы и сопоставление полей — иначе любая правка на стороне источника рвёт загрузку.
Сравнение вариантов загрузки
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Разовый импорт файла | Перенос каталога при запуске или крупное обновление ассортимента | Запуск вручную, структуру таблицы проверяем перед каждой загрузкой |
| Регулярная выгрузка по расписанию | Прайсы поставщиков, которые меняются предсказуемо | Ломается при смене колонок у источника, нужен разбор отклонённых строк |
| Промежуточная таблица | Несколько источников разной структуры, нужна нормализация | Требует регламента: кто и когда обновляет промежуточный слой |
| Обмен с учётной системой | Товары, цены и остатки меняются постоянно | Зависит от доступов и расписания обмена, нужна обработка конфликтов |
Разовый импорт закрывает задачу переезда, регулярная синхронизация — задачу актуальности; смешивать их в одном сценарии не стоит. На 1С-Битрикс мы обычно оставляем файл как аварийный канал, а основной поток строим через обмен с учётом: тогда структура меняется в одном месте и не требует правок в двух системах.
Как мы внедряем импорт: этапы инженерной работы
Импорт каталога — это не разовый скрипт, а регламент, который живёт вместе с прайсом поставщика. Файлы меняются: добавляются колонки, смещаются разделители, часть строк приходит с пустыми артикулами. Поэтому порядок работ строим так, чтобы каждое изменение можно было проверить до того, как оно коснётся боевого каталога.
Порядок работ
-
Разбор исходных файлов. Смотрим все варианты выгрузок: кодировку, разделитель, объединённые ячейки, несколько листов в книге, дубли артикулов. Фиксируем обязательные и необязательные колонки — от этого зависит поведение загрузчика на неполных строках.
-
Схема соответствия полей. Колонка прайса → свойство или поле инфоблока, плюс правила нормализации: разделитель дробной части, единицы измерения, кратность упаковки, привязка к разделам по группе товара. Схему согласуем письменно — дальше все правки идут только через неё.
-
Настройка загрузки. Обновление по внешнему ключу (артикул или код поставщика), чтобы повторный прогон менял цену и остаток, а не плодил дубли. Режимы разделяем: обновить существующее, создать новое, скрыть позиции, которых нет в файле.
-
Тестовый контур. Работаем на копии каталога: сухой прогон пишет лог по каждой строке — что обновлено, что пропущено и почему. Сверяем итог по количеству позиций и выборочно по карточкам.
-
Регламент загрузки. Расписание через агент Битрикса или системный планировщик, поведение при частичном сбое: файл фиксируется, транзакция откатывается, каталог не остаётся в половинчатом состоянии. Архив выгрузок позволяет вернуться к предыдущей версии прайса.
-
Передача и сопровождение. Отдаём схему полей, регламент и разбор типовых ошибок, обучаем сотрудника, который будет запускать загрузку. Дальше реагируем на изменения формата поставщика — обычно в течение пары дней.
Что передаём на выходе: настройки и регламенты
Импорт, который работает, но не описан, живёт до первой смены выгрузки у поставщика. Поэтому вместе с настроенным обменом передаём комплект, по которому загрузку можно эксплуатировать и менять без нас: правила разбора файлов, профили, схемы сопоставления полей, журналы запусков и инструкции для сотрудников.
- Правила обработки строк — как читается файл: разделитель и кодировка, формат чисел и дат, поведение при пустых ячейках, пробелах в артикулах и повторяющихся строках.
- Профили загрузки — отдельный набор настроек на каждого поставщика или площадку: свой источник, свой шаблон, режим «только обновлять» или «создавать и обновлять», снятие с публикации пропавших позиций.
- Схемы сопоставления — таблица «колонка в файле → поле или свойство каталога» с пометкой обязательных, вычисляемых и игнорируемых, включая привязку к разделам и торговым предложениям.
- Журнал импорта — отчёт по каждому запуску: время, сколько строк принято, сколько отклонено и по какой причине, какие файлы обработаны частично и требуют повторного прогона.
- Документация по импорту — описание всех профилей и их настроек с примерами файлов, чтобы правку можно было внести, не восстанавливая логику по коду.
- Инструкция для контент-менеджера — пошаговый сценарий: как запустить обмен вручную, как поставить его по расписанию, как прочитать отчёт и что делать при ошибке в конкретной строке.
- Регламент сопровождения и приёмки — периодичность сверки с поставщиком, порядок тестового прогона на копии каталога и контрольный набор строк, на котором проверяем корректность после любых изменений.
Кейс: прайс на несколько тысяч позиций без ручной правки
У оптового поставщика каталог — около 6 000 позиций, а прайсы приходят файлами Excel и CSV от десятка поставщиков, и структура у каждого своя. Сведение лежало на менеджере: обновление занимало 6-8 часов, расхождения по цене всплывали уже после отгрузки. Примерно каждая восьмая позиция требовала ручной правки — файл нельзя было просто загрузить.
Сопоставление артикулов
Основная работа ушла в правила сопоставления для импорта в 1С-Битрикс: нормализация артикула (регистр, разделители, ведущие нули, похожие символы латиницы и кириллицы) и приоритет точного совпадения по связке «артикул + производитель». Позиции, которые не совпали, попадают в карантин с отчётом, а не в каталог — менеджер разбирает список расхождений вместо простыни из тысяч строк.
Регламент обновления
Импорт запускается по расписанию и перед публикацией сверяет структуру и объём файла с предыдущим прогоном, отсекая битые выгрузки. Цены, остатки и характеристики обновляются одним набором, поэтому на сайте не бывает состояния, когда часть позиций уже с новыми ценами, а часть — со старыми.
После переноса обновление прайса занимает 15-20 минут вместо 6-8 часов. Ошибок сопоставления — единицы на прогон вместо сотен, доля позиций, которые правят руками, сократилась с 12% до 2%. Каталог обновляется к открытию смены, а менеджер занимается заказами, а не сверкой файлов.
Чем отличается разовая загрузка от регулярной синхронизации?
Разовая загрузка — это одиночный перенос: файл разбирается, строки сопоставляются с карточками каталога по внешнему коду или артикулу, результат фиксируется как есть. На входе учитываются кодировка, разделитель и формат чисел, иначе цены с запятой вместо точки уезжают в мусор. Так закрывают старт проекта, переезд с другой платформы или первую поставку от оптовика, а сам перенос идёт одной транзакцией — сбой в середине файла не оставляет каталог наполовину обновлённым.
Регулярная синхронизация нужна там, где данные меняются постоянно: цены, остатки, комплектация, складские количества. Здесь работает расписание обмена — раз в час, раз в сутки или по появлению нового файла в папке выгрузки. Принципиальное отличие в том, что каталог не перезаливается целиком: система считает разницу между свежей выгрузкой и текущим состоянием и применяет только её.
Частичное обновление — то, что делает такую схему безопасной. Сравниваются лишь поля, помеченные как обновляемые: цена и остаток меняются, а вручную дописанное описание, фотографии и привязка к разделам остаются нетронутыми. Позиция, которой нет в новом файле, не удаляется молча — она попадает в отчёт и ждёт решения, иначе одна битая выгрузка обнулит каталог.
Критерий выбора простой. Если поставщик отдаёт файл реже раза в месяц и структура колонок стабильна, достаточно разовой загрузки с ручным запуском. Если цены или остатки живут своей жизнью, расписание обмена снимает ручную правку и расхождения между складом и сайтом.
Частые технические вопросы по импорту таблиц
Импорт таблиц редко проходит гладко с первого файла: выгрузка приходит с пустыми артикулами, несовпадением разделителей и следами ручной правки. Разбираем, как ведёт себя каталог в четырёх ситуациях, которые чаще всего вызывают вопросы.
Что будет с битыми строками — импорт упадёт целиком?
Нет. Строка с пустым артикулом или нарушенным числом колонок попадает в отчёт об ошибках, остальные позиции обрабатываются штатно. Загрузка не встаёт — вы получаете перечень строк с причиной отказа.
Файл пришёл в другой кодировке — данные превратятся в «кракозябры»?
Кодировка и разделитель задаются в профиле: перед разбором значения конвертируются в единый формат, поэтому точка с запятой вместо запятой столбцы не смешивает. Невидимый служебный символ в начале файла снимаем отдельно — он чаще всего портит строку заголовков.
Как импорт обходится с дублями товаров?
Ключ сопоставления — артикул или внешний код, а не название: совпал — обновляем карточку, не совпал — создаём новую. Если артикулы дублируются между прайсами, добавляем правило склейки по коду производителя, иначе каталог начнёт распухать.
Что будет, если загрузка оборвётся на середине?
Импорт идёт порциями, позиция обработки фиксируется перед каждой записью. При обрыве связи каталог остаётся в согласованном состоянии, а следующий запуск продолжает с последней успешной строки, не пересобирая всё заново. Полная замена выполняется только после разбора всего файла.
Обсудим задачу: вернёмся с оценкой и планом работ
Чтобы вернуться с оценкой импорта и рабочим планом, нам не нужен полный доступ ко всему проекту — достаточно тестовой копии каталога и одного реального файла выгрузки. По нему мы видим структуру колонок, типы данных, дубли и «пустые» строки, которые ломают загрузку чаще всего. Если образец выгрузки даёт поставщик — возьмём как есть, со всеми его отклонениями от формата.
Отдельно проговорим правила сопоставления: какая колонка превращается в название товара, какую привязываем к разделу, что уходит в свойства, как считаем цену и остаток, что делать с отсутствующими позициями. Здесь же фиксируем ответственного за данные с вашей стороны — он подтверждает правила и решает спорные случаи, когда файл противоречит текущему каталогу.
Что нужно от вас для старта:
- доступ к тестовой копии каталога или отдельному разделу для пробной загрузки — на живом каталоге ничего не меняем
- образец выгрузки Excel или CSV в том виде, в котором его отдаёт поставщик, а не «причёсанный» вручную
- 2-3 примера строк, которые раньше грузились с ошибкой или задваивались
- правила сопоставления колонок: раздел, свойства, единицы измерения, кратность, ставка налога
- регламент обновления: полная замена каталога или догрузка только изменений, с какой периодичностью
- один ответственный за данные с вашей стороны — с правом утверждать правила, а не согласовывать каждую строку
- контакт поставщика или его формат-описание, если выгрузка меняется от партии к партии
Этого хватает, чтобы собрать прототип на вашем файле, показать, как отработают проблемные строки, и оценить объём работ по вашему каталогу. Опишите задачу и приложите образец выгрузки — вернёмся с оценкой, планом работ и перечнем проверок, которые закроем до запуска в бой.







