Сброс настроек интеграции CS-Cart с 1С (рабочее решение)

Добрый день!

В официальной документации CS-Cart не всегда подробно описано, как полностью сбросить интеграцию с 1С, особенно если обмен «зашёл в тупик», появились дубли или товары перестали обновляться.

Хочу поделиться проверенным способом полного сброса синхронизации между CS-Cart (у меня версия 4.18.3) и 1С:Предприятие.


:wrench: Какие таблицы отвечают за связь с 1С?

Все данные о синхронизации хранятся в следующих таблицах (префикс cscart_ может отличаться):

  • cscart_commerceml_imports — журнал сессий импорта
  • cscart_commerceml_import_entities — старый формат хранения сущностей (в некоторых версиях)
  • cscart_commerceml_import_entity_mapосновная таблица соответствий (в современных версиях, включая 4.18.x)
  • cscart_commerceml_import_removed_entities — список удалённых объектов (у меня оказалась пустой)

:bulb: Именно через cscart_commerceml_import_entity_map CS-Cart «помнит», какой GUID из 1С соответствует какому объекту в магазине.

Пошаговый сброс

  1. Обязательно сделайте резервную копию базы данных!
    (через phpMyAdmin, mysqldump или панель хостинга)
  2. Очистите таблицы синхронизации — лучше по одной, чтобы убедиться, что всё прошло успешно:
    sql
    TRUNCATE TABLE cscart_commerceml_imports;
    TRUNCATE TABLE cscart_commerceml_import_entities;
    TRUNCATE TABLE cscart_commerceml_import_entity_map;
    – (опционально)
    TRUNCATE TABLE cscart_commerceml_import_removed_entities;

Не используйте DELETE FROMTRUNCATE быстрее и корректнее сбрасывает.

  1. Очистите кеш CS-Cart:
  • Удалите всё содержимое папки var/cache/
  • Или через админку: Веб-сайт → Темы → Очистить кеш
    Всё!!!

Если есть другой способ обнулить синхронизацию буду рад применить.

Если кому интересно как идёт синхронизация

В Таблице cscart_commerceml_import_entity_map колонка local_id
Так закрутили
Если entity_type = ‘product’, то
→ local_id = product_id из таблицы cscart_products.

Если entity_type = ‘category’, то
→ local_id = category_id из cscart_categories.

Если entity_type = ‘product_feature’, то
→ local_id = feature_id из cscart_product_features.

По самой сути обмена с 1с — предложенный способ отлично подходит для небольших каталогов (до 100–200 товаров). Однако при масштабировании до 10 000+ позиций, особенно с богатой структурой характеристик и вариантами, синхронизация, к сожалению, не радует — но, скорее всего, это следствие объёма данных и особенностей реализации модуля CommerceML в CS-Cart, а не проблема хостинга. Для крупных каталогов такой подход может оказаться неудобным, и было бы здорово увидеть более производительное решение.

2 лайка

На коленке сделал модуль кнопку сброса настройки)))

1 лайк