Импорт товаров из Excel в 1С-Битрикс без дублей: как безопасно обновлять каталог
Как подготовить Excel/CSV для 1С-Битрикс, выбрать стабильный ключ товара, обновить цены, свойства, изображения и предложения без дублей и потери данных.
Импорт каталога из Excel часто воспринимают как простую загрузку таблицы: сопоставить колонки, нажать кнопку и дождаться завершения. Риск появляется при второй загрузке. Если система не может однозначно узнать уже существующий товар, вместо обновления она создаёт дубль, меняет не ту запись или оставляет часть старых данных.
В штатном мастере 1С-Битрикс загружается файл CSV, а Excel обычно используется для его подготовки. Безопасный импорт — это управляемое слияние данных: у каждой строки есть стабильный ключ, заранее определены правила обновления пустых и нулевых значений, а результат проверяется на небольшой выборке до загрузки всего каталога.

Excel и CSV — не одно и то же
Файл .xlsx умеет хранить формулы, форматирование, несколько листов и типы ячеек. CSV содержит только строки и разделители. Именно при сохранении из Excel в CSV проявляются ошибки, которых не видно в таблице: исчезают ведущие нули, дата превращается в число, дробная цена получает другой разделитель, а формула сохраняет рассчитанное значение не в том формате.
Официальный курс 1С-Битрикс рекомендует сначала экспортировать существующий каталог и использовать файл как образец. Это практичный способ увидеть названия служебных колонок, разделитель, представление свойств, цены и валюты именно в текущем проекте.
Перед импортом нужно явно зафиксировать:
- кодировку файла и разделитель полей;
- десятичный разделитель для цен и числовых свойств;
- формат логических значений, дат и множественных полей;
- правило для пустой ячейки: «не менять» или «очистить»;
- правило для нуля: реальное значение или отсутствие данных;
- колонки, которые являются обязательными;
- стабильный идентификатор каждой записи.
Формулы перед сохранением лучше заменить рассчитанными значениями, скрытые строки удалить, объединённые ячейки развернуть, а товары держать на одном листе. Ведущие нули в артикулах и штрихкодах сохраняют как текст. После экспорта CSV полезно открыть обычным текстовым редактором и проверить несколько строк, кавычки, переносы и русские символы.
Главное решение — по какому полю находить товар
Для обновления Битриксу необходимо понять, какой элемент в базе соответствует строке файла. Название товара для этого ненадёжно: его исправляют, дополняют характеристикой или повторяют у разных позиций. Артикул подходит только тогда, когда он действительно уникален, заполнен у всех товаров и запрещён к произвольному изменению.
На практике устойчивым ключом обычно становится внешний код XML_ID или отдельное свойство с теми же гарантиями: одно значение принадлежит только одной записи и не меняется между импортами. Если каталог уже существует, ключи сначала выгружают с сайта и связывают с исходной таблицей. Генерировать новые значения перед каждой загрузкой нельзя — тогда любая строка будет выглядеть как новый товар.

До импорта проверяют три ограничения:
- в файле нет двух строк с одинаковым ключом;
- в каталоге нет двух элементов с таким же значением;
- каждый обновляемый товар из файла находит ровно одну запись.
Дубли внутри файла нельзя молча «решать» выбором последней строки. Сначала нужно установить, почему они появились: два склада, разные размеры, повторная выгрузка или действительно две самостоятельные позиции. Для складов и характеристик используются отдельные сущности, а не несколько копий родительского товара.
Сначала составьте карту полей каталога
Колонка таблицы должна быть связана с конкретным полем Битрикса. До подготовки файла полезно описать эту карту: поле элемента, свойство инфоблока, цена, количество, раздел, изображение или поле торгового предложения. Тогда одинаковые по смыслу данные не окажутся одновременно в штатном поле и пользовательском свойстве.
Минимальная карта обычно включает:
- идентификацию:
XML_ID, артикул и штрихкод; - карточку: название, символьный код, анонс и детальное описание;
- классификацию: разделы, бренд, тип и назначение;
- характеристики: материал, цвет, размер, габариты и единицы измерения;
- продажу: типы цен, валюта, НДС, количество и доступность;
- медиа: анонсовое, детальное и дополнительные изображения;
- варианты: связь предложения с родительским товаром.
Если свойства каталога ещё не настроены, сначала проектируют их типы. Число не стоит хранить строкой, справочник брендов — набором случайных написаний, а множественную характеристику — строкой через запятую без согласованного разделителя. Исправлять структуру после массового импорта сложнее: значения уже участвуют в фильтре, шаблонах и интеграциях.
Для нового или сильно изменяемого каталога полезна предварительная настройка инфоблоков и структуры каталога. Она отделяет модель данных от одноразового файла и позволяет повторять импорт без ручного сопоставления каждой колонки.
Как подготовить свойства и значения списков
Строковое свойство принимает текст почти без ограничений, поэтому ошибки в нём менее заметны. Свойства типа «Список», «Привязка к элементам», числа и справочники требуют точного формата. Значения «Серый», «серый», «сер.» и «Grey» могут превратиться в разные варианты фильтра, хотя для менеджера это один цвет.
До загрузки формируют допустимые справочники и таблицу соответствий. Исходное значение «нерж. сталь» преобразуется в утверждённое «Нержавеющая сталь», а неизвестное значение попадает в отчёт, а не создаётся автоматически. Для числовых характеристик отдельно проверяют единицы: 50 сантиметров и 500 миллиметров не должны оказаться разными размерами одного товара.
Пустая ячейка особенно опасна при обновлении. В одном процессе она означает «источник не передал поле, оставить как есть», в другом — «значение удалено, очистить на сайте». Эти режимы нельзя смешивать. Если штатный мастер не позволяет выразить нужное правило для каждого поля, файл разбивают на отдельные операции или используют контролируемый обработчик импорта.
Разделы каталога тоже требуют стабильной идентификации
Создание разделов только по названиям приводит к похожим проблемам. В каталоге могут существовать две категории «Аксессуары» под разными родителями. Если файл содержит только последнее название, невозможно определить нужную ветку. Безопаснее передавать внешний код раздела или полный согласованный путь вместе с правилами создания.
Перед импортом проверяют:
- существует ли родительский раздел;
- уникален ли внешний код категории;
- можно ли создавать отсутствующие разделы автоматически;
- что делать при переименовании и переносе раздела;
- должен ли товар состоять в одном или нескольких разделах.
Автоматически строить глубокое дерево из свободного текста рискованно: опечатка создаст новую ветку, которая сразу попадёт в меню, фильтр и URL. Новые разделы лучше сначала собрать в отчёт и подтвердить отдельно.
Цены: ноль, пустая ячейка и удаление — разные операции
В Битриксе у товара может быть несколько типов цен: базовая, оптовая, дилерская или проектная. В CSV нужно передавать не абстрактную колонку «Цена», а значение для конкретного типа и валюту. Иначе число запишется не туда, останется старая цена или карточка потеряет возможность покупки.
Нулевая цена иногда означает бесплатный товар, иногда — временное отсутствие цены, а иногда является ошибкой выгрузки. Пустая ячейка может означать «не обновлять». Политика определяется до загрузки. Нельзя автоматически заменять пропущенное значение нулём: это меняет коммерческий смысл товара.
После тестового импорта проверяют не только число в административной части, но и публичную цену для разных групп пользователей, скидки, валюту и добавление в корзину. Компонент может показывать минимальную цену предложения или применять правило, которого нет в исходной таблице.
Изображения нужно подготовить как отдельный набор данных
В официальной документации 1С-Битрикс указано, что изображения можно передавать путями к заранее загруженным файлам или внешними URL, но массовое копирование удалённых картинок увеличивает время импорта. Для большого каталога надёжнее заранее разместить файлы в выделенной папке и передавать предсказуемые относительные пути.
До загрузки полезно проверить:
- существует ли каждый файл и открывается ли он;
- какое изображение является анонсовым, детальным и дополнительным;
- нужно ли заменять старую фотографию или только добавлять новую;
- нет ли одинаковых файлов под разными именами;
- соответствуют ли размеры и формат требованиям шаблона;
- не содержит ли путь кириллицу, пробелы или временный домен.
Повторный импорт не должен бесконечно добавлять те же изображения в множественную галерею. Для этого файлы сопоставляют по стабильному имени или отдельному идентификатору, а правило замены проверяют на одной карточке.
Товары с торговыми предложениями загружаются в два слоя
Если размер, цвет или комплектация имеют собственную цену, остаток, штрихкод либо возможность покупки, их обычно хранят как торговые предложения. Родительский товар содержит общую информацию карточки, а каждое предложение — данные конкретного варианта.
Для такой модели готовят два набора строк. Сначала импортируют товары и получают или сохраняют их внешние коды. Затем загружают предложения, где у каждой строки есть собственный XML_ID и ссылка на родителя через CML2_LINK. Официальный урок по импорту торговых предложений отдельно подчёркивает необходимость уникальных идентификаторов и корректной привязки к товару.

Нельзя превращать каждую пару «цвет + размер» в самостоятельную карточку только потому, что так проще подготовить Excel. Это создаёт дубли страниц, усложняет фильтр и делает обновление остатков ненадёжным. Сначала выбирают модель каталога, затем формат файла под неё.
Безопасный процесс: от образца до массовой загрузки

- Экспортировать образец. Взять несколько существующих товаров со всеми нужными полями и сохранить структуру колонок.
- Зафиксировать ключ. Проверить уникальность
XML_IDили выбранного свойства в файле и каталоге. - Нормализовать данные. Привести цены, справочники, единицы, разделы и пути к согласованному формату.
- Сделать резервную копию. Сохранить базу и состояние затрагиваемого инфоблока до массового изменения.
- Импортировать 10–20 строк на копии. В выборке должны быть новый товар, обновляемый товар, пустое значение, ноль, изображение и предложение.
- Повторить тот же импорт. Количество товаров не должно увеличиться, а существующие данные должны остаться стабильными.
- Загрузить пакетами. Для большого файла использовать пошаговую обработку, журнал и возможность продолжить после ошибки.
- Проверить публичный каталог. Сравнить контрольные товары, разделы, фильтр, поиск, цены, варианты и корзину.
Повторная загрузка — обязательный тест на идемпотентность: одинаковый вход должен приводить к одинаковому состоянию каталога. Если второй запуск создаёт новые записи или ещё раз добавляет фотографии, массовый импорт запускать рано.
Что делать с товарами, которых нет в файле
Отсутствие строки не всегда означает удаление товара. Файл может содержать только изменившиеся позиции, один бренд или одну категорию. Поэтому деактивация всего, чего нет в очередном CSV, опасна. Она допустима только для полного снимка каталога, если источник явно гарантирует его полноту.
Безопасные варианты:
- ничего не менять у отсутствующих товаров;
- деактивировать только элементы из отдельного полного источника;
- пометить записи как кандидатов на архив и подтвердить список вручную;
- сравнить дату последнего появления товара в нескольких загрузках;
- хранить источник данных и применять правило только внутри него.
Удаление элементов хуже деактивации: меняются ссылки, корзины, история заказов и SEO-страницы. Для регулярной синхронизации жизненный цикл товара проектируют отдельно от обновления цены или описания.
Когда штатного мастера CSV недостаточно
Штатный импорт удобен для первичного наполнения и понятных таблиц. Специальный обработчик нужен, когда загрузка выполняется регулярно, содержит десятки тысяч строк, объединяет несколько источников или требует сложных правил. Например, нужно искать бренд в справочнике, создавать предложения, связывать документы, не очищать отсутствующие поля и возвращать менеджеру отчёт по каждой строке.
Контролируемый импорт должен:
- проверять весь файл до первой записи;
- разделять ошибки и предупреждения;
- обрабатывать данные пакетами без переполнения памяти;
- запоминать прогресс и продолжать после сбоя;
- использовать штатные API Битрикса, а не прямой SQL;
- вести журнал созданных, обновлённых и пропущенных элементов;
- не запускать одновременно два импорта одного источника.
Если таблица приходит от поставщика по расписанию, разовая загрузка превращается в интеграцию каталога с внешним источником. В ней важны контроль версии файла, повторные попытки, уведомление об ошибках и защита от загрузки пустого или неполного пакета.
Что проверить после импорта
Сообщение мастера об успешном завершении не подтверждает качество каталога. После загрузки сравнивают количество строк, созданных и обновлённых записей, а также список ошибок. Затем проверяют контрольную выборку: новый товар, изменённый, не участвовавший в файле, товар с нулевой ценой, несколькими фотографиями и предложениями.
Практический чек-лист:
- нет повторяющихся
XML_IDи артикулов, если артикул должен быть уникальным; - повторный импорт не увеличивает количество элементов;
- товары находятся в правильных разделах;
- свойства имеют нужные типы и отображаются в фильтре;
- цены, валюты, НДС и остатки записаны в правильные сущности;
- предложения связаны с родителями и выбираются в карточке;
- изображения загружены один раз и не повреждены;
- символьные коды и URL не изменились неожиданно;
- поиск, фильтр, карточка и корзина работают анонимно;
- в журналах нет новых ошибок PHP и импорта.
Если после загрузки появились дубли, сначала останавливают повторные запуски и сохраняют журнал. Массовое удаление по названию опасно: среди совпадений могут быть реальные варианты или товары из разных источников. Поможет аудит каталога 1С-Битрикс с проверкой ключей, привязок и истории изменения; для уже проявившейся ошибки — диагностика и исправление сайта.
FAQ
Можно ли загрузить файл XLSX прямо в 1С-Битрикс?
Штатный мастер каталога работает с CSV. Excel удобно использовать для подготовки, проверки и сохранения таблицы в нужном формате. После сохранения CSV нужно отдельно проверить кодировку, разделитель, числа и ведущие нули.
Что лучше использовать как ключ: XML_ID или артикул?
XML_ID предназначен для внешнего сопоставления и обычно является предпочтительным. Артикул можно использовать, если он заполнен у всех товаров, уникален и не меняется. Одного совпадения названий недостаточно.
Почему после повторного импорта появляются дубли?
Чаще всего изменился или не был передан ключ, сопоставление выполняется по названию либо в файле присутствуют повторяющиеся идентификаторы. Сначала сравните ключ одной строки в двух загрузках и найдите соответствующую запись в каталоге.
Можно ли импортом очищать свойства?
Можно, но правило пустого значения нужно определить заранее и проверить на тестовом товаре. В некоторых процессах пустая ячейка означает «не обновлять», поэтому автоматическая очистка может удалить данные, которых просто не было в исходном файле.
Как загрузить размеры и цвета?
Если они имеют собственную цену, остаток или штрихкод, обычно создаются торговые предложения. Каждому предложению нужен уникальный XML_ID и корректная связь CML2_LINK с родительским товаром.
Нужно ли делать резервную копию перед импортом?
Да, если загрузка изменяет существующий каталог. Кроме общей резервной копии полезно экспортировать затрагиваемые элементы с идентификаторами, чтобы сравнить состояние и при необходимости восстановить конкретные поля.
Когда импорт стоит автоматизировать?
Когда файл поступает регулярно, объём велик, есть несколько поставщиков, сложные справочники или торговые предложения. Автоматизация оправдана, если вместе с ней появляются проверка входных данных, журнал, защита от повторного запуска и понятный отчёт.
Вывод
Безопасный импорт товаров из Excel в 1С-Битрикс начинается не с кнопки загрузки, а со стабильной модели данных. У товара должен быть неизменный ключ, у каждой колонки — понятное назначение, у пустых значений — согласованное поведение, а у торговых предложений — собственные идентификаторы и связь с родителем.
Сначала экспортируйте образец, проверьте файл, выполните тест на небольшой выборке и повторите его второй раз. Если количество элементов не выросло, свойства, цены и фотографии обновились ожидаемо, можно переходить к пакетной загрузке. Для регулярных файлов этот же процесс становится основой надёжной интеграции, а не одноразовой операцией с непредсказуемым результатом.
Нужно оценить задачу по сайту?
Опишите, что нужно изменить, приложите ссылку на страницу и удобный способ связи. Я посмотрю задачу и подскажу, с чего лучше начать.