Enver Dzheparov

Исправление CommerceML 1С

Убирает дубли товаров после выгрузки из 1С

$70 · разработка · IP5 Agency

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

Модуль не встраивается в сам процесс импорта и не работает в фоне — это инструмент диагностики и ручной починки: вы запускаете его из панели администратора, когда нужно сопоставить товары заново по артикулу и подготовиться к следующей выгрузке.

Этот модуль нужен если:

Что умеет модуль:

1. Установка и настройка

Установка производится стандартным способом через панель управления CS-Cart:

После установки откройте страницу настроек. Доступны следующие параметры:

Страница настроек модуля

Рис. 0 — Страница настроек с параметрами конфигурации и кнопками быстрого доступа

2. Предпросмотр и применение замены идентификаторов

Основная функция модуля — ручная, управляемая замена идентификаторов с предварительным просмотром всех изменений перед их применением. Это не автоматический процесс: каждый запуск инициируется администратором и требует подтверждения.

Важно понимать: замена меняет только связь товара с внешним идентификатором 1С в служебной таблице CS-Cart. Она не изменяет сам товар, его цену, остатки или другие данные, и не запускает импорт — это подготовка к тому, чтобы следующий импорт из 1С прошёл корректно.

Страница предпросмотра

Рис. 1 — Страница предпросмотра: таблица товаров с предстоящими заменами

Детальный вид предпросмотра

Рис. 2 — Детальный вид: артикулы, названия и пары идентификаторов

3. Проверка дублирующихся артикулов

Нажмите «Проверить дублирующиеся артикулы» на странице настроек. Страница содержит два раздела:

Рис. 3 — Таблица товаров с одинаковыми артикулами в базе данных

Рис. 4 — Полный файл логов

Рис. 5 — Дублирующиеся артикулы внутри выбранного XML-файла из 1С

4. Пропущенные записи при импорте

Нажмите «Пропущенные записи» на странице настроек — отображаются до 150 последних пропущенных записей, отсортированных по дате. Для каждой записи модуль ищет строку с этим UUID в файлах commerceml.log и пытается вытащить из неё причину пропуска.

В таблице отображается:

Если для записи не удалось найти совпадение ни в одном лог-файле, в таблице так и будет указано «не найдено в логах» — это может происходить, если нужный лог уже был ротирован или удалён с сервера.

Рис. 6 — Таблица пропущенных записей с причиной из лога и ссылкой на товар

5. Журнал ошибок CommerceML

Доступен через ссылку в меню администратора. Модуль сканирует все файлы commerceml.log*, извлекает строки с тегом [error] и группирует их по файлам лога, начиная с самого нового. Одинаковые строки показываются только один раз — дубликаты фильтруются автоматически. Если по идентификатору из строки ошибки удаётся найти товар на сайте — показывается прямая ссылка на его редактирование; название товара при этом извлекается из текста самой строки лога и зависит от того, в каком формате 1С её записала, поэтому в части строк название может не определиться.

6. Откат изменений

После применения замен кнопка «Откат (N)» появляется на странице настроек. В скобках указано количество изменённых записей.

Важно: список последних замен для отката хранится в сессии браузера, а не в базе данных. Кнопка «Откат» доступна только пока вы не вышли из системы и сессия активна; после логаута или истечения сессии возможность отката через интерфейс модуля теряется безвозвратно. Рекомендуем проверять результат сразу после применения замены, до выхода из системы.