Дубли товаров после импорта из 1С — решение через сопоставление по артикулу

Привет всем.

Хочу поднять тему которая периодически всплывает на форуме — дубли товаров после выгрузки из 1С. Расскажу что происходит и как мы это решили.

Проблема

После очередного импорта из 1С в каталоге появляются новые товары — хотя это те же самые позиции которые уже были. CS-Cart не узнаёт их и создаёт дубликаты вместо обновления существующих записей.

Причина: 1С иногда перегенерирует внутренние идентификаторы (UUID) для товаров — после переустановки базы, обновления конфигурации или по другим причинам. CS-Cart ищет товар по UUID из XML-файла, не находит совпадения и создаёт новый.

В итоге один и тот же товар существует дважды с разными product_id. Часть заказов, отзывов и статистики уходит на старую запись, часть — на новую.

Решение

Сопоставление по артикулу (product_code) вместо UUID. Модуль читает XML-файл из 1С, находит товары где UUID изменился, сопоставляет их с существующими записями по артикулу и обновляет UUID в базе до импорта. CS-Cart видит знакомый UUID и обновляет товар, а не создаёт новый.

Предпросмотр перед применением

Всё работает в два шага — сначала видите список предстоящих замен, потом нажимаете «Применить». Строки где название товара в XML и на сайте не совпадает — выделены отдельно. Это защита от ошибочных замен.

Поиск дублей

Отдельная страница показывает два типа дублей:

  • Дубли на сайте — товары с одинаковым артикулом в базе данных CS-Cart
  • Дубли в XML-файле — артикулы которые встречаются больше одного раза в выгрузке из 1С. Сигнал о проблеме на стороне 1С — при импорте невозможно понять какую из записей использовать

Пропущенные записи и журнал ошибок

Часто часть товаров при импорте молча пропускается — без ошибки, просто не появляется. Модуль показывает до 150 последних пропущенных записей с причиной из commerceml.log и ссылкой на товар если он найден на сайте.

Отдельно — журнал ошибок CommerceML: сканирует все файлы commerceml.log*, группирует ошибки, убирает дубли, добавляет прямые ссылки на редактирование товаров.

Откат

После применения замен кнопка «Откат» активна в течение текущей сессии. Если что-то пошло не так — мгновенный возврат к предыдущему состоянию.

Модуль: https://marketplace.cs-cart.com/1c-import-cs-cart.html

Кто сталкивался с дублями после импорта из 1С — как решали? Интересно узнать другие подходы.