“CommerceML (1С, МойСклад, Бизнес.Ру)”¶
Важно
Это статья о новом модуле CommerceML, который впервые появился в 4.11.5 с пометкой [Dev] и полноценно вышел в версии 4.12.1. Старый модуль описан в документации для более ранних версий.
Модуль CommerceML полезен для тех магазинов и маркетплейсов, которые работают с системами учёта. Он позволяет:
- выгружать из системы учёта в магазин информацию о товарах, их остатках и ценах;
- отправлять в систему учёта информацию о заказах;
- выгружать из системы учёта изменения в этих заказах (статус, товары);
- разрешить вашим продавцам делать всё вышеперечисленное (если у вас маркетплейс).
Чтобы всё это работало, ваша система учёта должна уметь отправлять и принимать эти данные в формате CommerceML. Например, это умеют 1С, МойСклад и Класс365 (Бизнес.Ру).
Примечание
Модуль работает с версиями схемы CommerceML 2.05, 2.07 и 2.10. При получении данных модуль сам поймёт, какая версия используется.
Как организовать обмен между системой учёта и магазином?¶
После того, как вы установите модуль, в меню Администрирование появляется пункт Синхронизация данных. Там есть раздел CommerceML: 1С, МойСклад, Бизнес.Ру. Все настройки на стороне CS-Cart выполняются в нём. В Multi-Vendor этот раздел доступен для продавцов. Процесс разбит на 3 шага. Первые два шага понадобится делать не всегда; возможно, только один раз.
Учётная запись для обмена в Multi-Vendor¶
Для обмена товарами конкретного продавца укажите в системе учета логин и пароль администратора этого продавца. Настраивайте соответствия и проверяйте результаты обмена в панели того же продавца: настройки и связи с товарами системы учета относятся к нему.
Если права пользователя ограничены группами, убедитесь, что этому пользователю разрешен обмен по CommerceML. Для управления группами пользователей для администраторов продавцов используется модуль Привилегии продавцов. Устанавливать его только для запуска обмена не требуется.
Шаг 1. Настройте свою систему учёта¶
Обмен данными всегда запускается из системы учёта (1С, МойСклад, Бизнес.Ру), а не из CS-Cart. Поэтому в первую очередь нужно, чтобы CS-Cart получил файлы оттуда. Для каждой системы учёта инструкция по подключению своя:
Первый шаг нужен сразу для двух вещей:
- так мы проверяем, доходят ли файлы из системы учёта до CS-Cart;
- так CS-Cart узнаёт, какие данные есть в файлах; эта информация нужна при следующем шаге.
После того, как вы запустите обмен в первый раз и он пройдёт успешно, у соответствующего пункта появится галка. Повторять этот шаг потом не понадобится.
Важно
Хотя вы запускаете обмен в системе учёта, на этом шаге CS-Cart ещё ничего не создаёт и не импортирует, а только анализирует файл. Полноценный обмен начинается только на третьем шаге.
Шаг 2. Настройте правила обмена и соответствия¶
После первого шага CS-Cart знает о содержимом вашего файла. Теперь можно настроить правила обмена данными. Они разбиты на несколько вкладок:
Каталог. Здесь можно настроить сценарии обмена. Например:
- Показывать ли новые товары из системы учёта покупателям сразу или делать их сначала выключенными/скрытыми?
- Создавать ли в магазине сразу все новые характеристики и категории или создавать только те, которые вы одобрите вручную?
- Что делать, если у товара в системе учёта меняется категория или изображение?
- Пытаться ли автоматически сопоставить категории (по названиям) и товары (по коду) с теми, которые уже существуют в магазине?
Важно
Доступные настройки зависят от редакции CS-Cart и прав пользователя. В Multi-Vendor продавцы не могут создавать категории через обмен или настраивать их автоматическое сопоставление по названиям.
В блоке дополнительных настроек вкладки Каталог находятся опции Стратегия импорта и Импортировать товарные предложения.
Стратегия импорта определяет, какие товары из системы учёта создавать или обновлять в магазине:
- Импорт всех товаров — создавать новые товары и обновлять найденные существующие.
- Создание только новых товаров — создавать новые карточки; товары, ранее созданные этим модулем в других обменах, пропускать.
- Обновление только существующих товаров — обновлять найденные карточки, не создавая новые.
- Вариант, запрещающий импорт, отключает обработку файла каталога. Обработка товарных предложений включается и выключается отдельно.
Стратегия определяет выбор товаров, а не перечень обновляемых полей. Например, обновление только существующих товаров не ограничивается ценами и остатками: могут изменяться и другие переданные данные с учётом настроек вкладок Каталог и Товары.
Импортировать товарные предложения — разрешает обработку данных предложений из системы учёта, обычно передаваемых в файле
offers.xml. Предложение содержит данные о продаваемом товаре или его варианте, в том числе цены и количество. Это не предложение продавца на маркетплейсе и не акция.Для обновления цен и остатков из файла предложений эта настройка должна быть включена.
Примечание
Отключение импорта каталога не отключает обработку товарных предложений: ею управляет отдельная настройка Импортировать товарные предложения. Чтобы остановить оба вида обработки, отключите и импорт каталога, и импорт предложений.
Категории при обмене в Multi-Vendor. При обмене с системой учёта продавец не может создавать новые категории маркетплейса. Если нужной категории ещё нет, попросите администратора маркетплейса создать её.
После первой передачи данных из системы учёта настройте соответствия:
- В панели продавца откройте раздел Синхронизация данных и выберите CommerceML.
- На странице настройки синхронизации откройте вкладку Категории.
- Для категорий из системы учёта выберите соответствующие категории маркетплейса и сохраните изменения.
На этой же странице во вкладке Каталог выберите категорию по умолчанию. Она будет использоваться для товаров, у которых категория из системы учёта не сопоставлена с категорией маркетплейса. Например, можно выбрать «Прочее», чтобы после обмена проверить эти товары и распределить их вручную.
Если для переданной категории нет соответствия и категория по умолчанию не выбрана, импорт товара завершится ошибкой о том, что категория не найдена.
Примечание
Если у создаваемого товара категории не переданы в выгрузке, CommerceML может использовать выбранную категорию по умолчанию.
Товары. Эта вкладка позволяет ещё точнее настроить, за что у вас отвечает система учёта, а за что — панель администратора магазина. Здесь вы можете:
- Выбрать, из каких полей в системе учёта брать свойства товаров (и брать ли вообще).
- Хотите ли вы, чтобы эти свойства отличались в системе учёта и в CS-Cart. Например, если вы хотите в системе учёта одно название товара, а в магазине другое, то можно сделать так, чтобы оно не перезаписывалось при каждом обмене.
Как сохранить название товара в магазине. Во вкладке Товары найдите строку названия товара и установите для неё флажок в столбце импорта только для новых товаров. Сохраните настройки.
При создании новой карточки название будет взято из выбранного поля системы учёта. При следующих обменах название существующей карточки не будет перезаписываться. Выбор источника названия и разрешение его обновления — разные настройки. Чтобы сохранить название существующего товара, недостаточно только изменить источник.
Заказы. Здесь вы решаете, какие заказы экспортировать в систему учёта, и нужно ли импортировать изменения в них обратно в магазин.
Примечание
Для просмотра заказов, выгружаемых в системы учёта, введите в браузере следующий URL:
ваш_домен/commerceml?type=sale&mode=query. Для авторизации используйте данные администратора, у которого есть права на обмен по CommerceML.В полученном файле будут также присутствовать пользовательские поля профиля, добавленные настройкой Экспорт в CommerceML при создании/редактировании полей.
Вкладки Цены, Налоги, Валюты, Категории, Характеристики товаров и Склады позволяют вам задать соответствие между этими объектами в системе учёта и в CS-Cart.
Во вкладках соответствий отображаются данные системы учёта, полученные и обработанные при обмене для текущего продавца или витрины. Это не полный список категорий, характеристик и других объектов магазина. Например, если во вкладке Категории доступны только две категории системы учёта, проверьте состав выгрузки и ограничения отбора в системе учёта.
Проверьте также другие страницы списка, если их несколько. Для сопоставления остальных категорий передайте данные о них и повторите обмен. Успешная проверка соединения или обмен заказами сами по себе не заполняют вкладки соответствий каталога.
Перед первым импортом необходимо сопоставить цены. Для этого после первого обмена откройте вкладку Цены, сопоставьте хотя бы один тип цены из системы учёта с подходящей ценой в магазине и сохраните настройки.
Пока такого соответствия нет, CommerceML работает в режиме анализа: получает данные для настройки, но не выполняет полноценный импорт товаров. Повторные запуски обмена без сохранения соответствия цен не меняют этот режим.
В Multi-Vendor настройте соответствие для того продавца, чья учётная запись указана в системе учёта.
Как сопоставить существующие товары¶
Если товары уже есть и в магазине, и в системе учёта, настройте их сопоставление, чтобы обмен обновлял существующие карточки.
CommerceML сначала ищет сохранённую связь по внешнему идентификатору товара. Если связи нет и включено сопоставление по коду, модуль ищет товар с совпадающим кодом. В Multi-Vendor поиск выполняется среди товаров соответствующего продавца.
Установка флажка сопоставления по коду сама по себе не запускает сопоставление. Оно выполняется при последующем импорте товаров из системы учёта.
- Проверьте коды товаров. Код в магазине должен совпадать со значением, передаваемым из системы учёта, например с артикулом. Для однозначного сопоставления коды должны быть заполнены и не повторяться у разных товаров магазина, а в Multi-Vendor — у товаров одного продавца. Названия товаров при сопоставлении по коду не учитываются.
- На странице настройки синхронизации CommerceML откройте вкладку Товары и выберите источник кода товара. Например, выберите артикул, если он совпадает с кодом в магазине.
- Во вкладке Каталог включите сопоставление товаров по коду.
- Если новые карточки создавать не нужно, раскройте дополнительные настройки каталога и выберите стратегию обновления только существующих товаров.
- Проверьте правила обновления названий, описаний, кодов, изображений и категорий, а также соответствия цен и других используемых данных. Сохраните настройки.
При стратегии обновления только существующих товаров позиции, для которых не найден товар в магазине, не создаются. Если вы ожидали обновления существующей карточки, проверьте коды и настройки сопоставления. Для добавления действительно новых товаров выберите стратегию, разрешающую их создание.
Важно
Сопоставление не является предварительным просмотром или режимом только создания связей. При обмене найденные товары обновляются по установленным правилам. Переданная из системы учёта пометка удаления также может привести к удалению связанного товара.
Примечание
Сохранённая связь имеет приоритет перед кодом. Если внешний идентификатор уже связан с существующей карточкой, сопоставление по коду не заменяет эту связь и не исправляет ошибочное соответствие.
Как обновлять цены и остатки существующих товаров¶
- Сопоставьте товары магазина с товарами системы учёта.
- Во вкладке Каталог раскройте дополнительные настройки. Выберите обновление только существующих товаров и включите Импортировать товарные предложения.
- В системе учёта включите передачу цен и остатков нужных товаров.
- Во вкладке Цены настройте соответствия типов цен. При необходимости настройте соответствия валют и складов.
- Во вкладке Товары ограничьте обновление полей, которые хотите вести в магазине. Отдельно проверьте правила обновления категорий и изображений во вкладке Каталог.
- Сохраните настройки. Затем выполните обмен и проверьте результат, как описано в шаге 3 и разделе Проверка результата обмена.
При проверке сравните цену и количество у нескольких сопоставленных товаров. Если товар не найден в магазине, стратегия обновления только существующих товаров не создаст для него новую карточку.
Успешный обмен заказами не подтверждает, что данные о ценах и остатках тоже переданы и обработаны.
Шаг 3. Выполните полноценный обмен¶
После сохранения настроек повторно запустите обмен из системы учёта. Если вы настроили сопоставление существующих товаров и система учёта позволяет ограничить выгрузку, для первого полноценного обмена выберите несколько позиций. Проверьте результат, прежде чем передавать весь каталог.
CommerceML обработает полученные данные в соответствии с выбранными правилами импорта и настроенными соответствиями. Так же будет происходить и при дальнейших обменах. Теперь имеет смысл настроить систему учёта так, чтобы она запускала обмен с CS-Cart периодически. В случае возникновения проблем c последним обменом их можно будет увидеть на странице обмена в CS-Cart.
Все ключевые события обмена записываются в лог, который хранится на сервере с вашим магазином. Лог последнего обмена можно получить прямо из интерфейса, со страницы Администрирование → Синхронизация данных. Остальные логи хранятся в папке /var/files/[идентификатор]/exim.
Чтобы логи со временем не заполнили весь сервер, старые логи автоматически удаляются. Через файл local_conf.php можно указать, сколько файлов хранить, и каким может быть максимальный размер файла. Для этого туда можно добавить два параметра:
$config['commerceml']['max_log_file_size'] = 10240;
$config['commerceml']['max_log_files'] = 10;
Примечание
При выгрузке данных из системы учёта обновляются статусы заказов в соответствии с:
- Статусом заказа Мой склад;
- Датой отгрузки по 1С и Датой оплаты по 1С. Если приходят сразу две даты, приоритет отдается Дате отгрузки по 1С.
Проверка результата обмена¶
После обмена проверьте журнал и несколько товарных карточек.
- Найдите записи нужного обмена по времени и убедитесь, что обработка данных завершилась.
- Для проверяемого товара найдите результат: создание, обновление или пропуск. Проверьте внутренний идентификатор товара и причину пропуска, если она указана.
- Откройте карточку товара и сравните код, цену, остаток, категорию и изображения с ожидаемыми значениями. Если настраивали сопоставление существующих товаров, убедитесь, что обновились нужные карточки и не появились дубли.
Примечание
Отсутствие ошибок в журнале не гарантирует, что переданы все необходимые данные. Например, если файл изображения не получен, изображение может быть пропущено без отдельной ошибки.
При обновлении только существующих товаров несопоставленные позиции пропускаются. Такие пропуски могут отображаться в журнале как ошибки. Проверьте, соответствует ли этот результат выбранной стратегии импорта.
Проверьте передачу товаров в заказах. CommerceML получает каталог из системы учёта и передаёт ей заказы. Передача товара в составе заказа не означает выгрузку всего каталога магазина.
Если у товара в заказе нет сохранённой связи с системой учёта, CommerceML передаёт его внутренний идентификатор из магазина. Дальнейшая обработка зависит от системы учёта: она может воспринять такую позицию как новый товар.
Перед началом регулярного обмена заказами сопоставьте товары и проверьте обработку тестового заказа в системе учёта.