CommerceML — это XML-формат, на котором 1С обменивается с интернет-магазином: товарами, ценами, остатками и заказами. Когда говорят «стандартный обмен 1С с сайтом», почти всегда имеют в виду именно его. Формат открытый, поэтому его понимают самые разные платформы. Отсюда и плюс, и минус: обмен подключается быстро, а ломается в тот момент, когда магазин перерастает типовую схему.

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

CommerceML: что это и из чего состоит обмен

Это не программа и не модуль, а договорённость сразу о двух вещах:

  • формат — XML-файлы с классификатором, каталогом, предложениями и документами;
  • протокол — порядок HTTP-запросов, которыми 1С передаёт файлы на сайт и забирает заказы.

Формат разработала фирма «1С», он описан в открытых спецификациях, к нему есть схема XSD. В обмене с сайтами обычно используют вторую версию формата; версия схемы указана в корневом элементе файла, и стоит смотреть именно туда, а не гадать по конфигурации.

Главное свойство стандартного протокола: инициатор — 1С. Сайт сам ничего в 1С не отправляет, он только отвечает на запросы. Поэтому заказ попадает в 1С не в момент оформления, а при ближайшем сеансе обмена, и частота сеансов задаёт задержку всей схемы.

В 1С-Битрикс поддержка такого обмена входит в состав магазина, но набор возможностей зависит от редакции и версии. Для WooCommerce и ряда других CMS его обычно подключают отдельными модулями. Состав функций у реализаций разный, поэтому ниже — общий принцип, а детали сверяйте с документацией вашей платформы и версии 1С.

Файлы CommerceML: import.xml, offers.xml, orders.xml

Данные делят по смыслу: что продаём, за сколько и сколько есть, что заказали. Каждому слою — свой файл и свой типичный способ сломаться.

Файл или этапЧто содержитТипичная проблема
import.xml — каталогКлассификатор (группы, свойства, единицы измерения) и сам каталог: товары с Ид, артикулом, наименованием, группой, значениями свойств, ссылками на картинки, характеристикамиИд товара изменился (товар пересоздали, базу скопировали): сайт видит новый товар и плодит дубль. Свойство-справочник не сопоставилось со списком на сайте. В XML путь к картинке есть, а самого файла нет
offers.xml — предложенияТипы цен, склады и предложения: цена и остаток на каждое. У товара с характеристиками отдельное предложение на каждую характеристикуТип цены или склад не сопоставлены на сайте: цены нет, остаток нулевой. Предложение не находит товар по Ид, потому что каталог ещё не загружен или загружен не до конца
Картинки и вложенияФайлы изображений рядом с XML, в подкаталоге; в самом XML указан относительный путьЛимит размера порции или тайм-аут: часть файлов не дошла. Неожиданные символы в имени файла, регистр букв
orders.xml — заказы в 1СДокументы: номер, дата, Ид заказа на сайте, покупатель, состав, суммы, доставка, комментарий. В типовом документе указаны роль и вид операции, по которым 1С понимает, что это заказ. Отдельного файла с именем orders.xml протокол не требует: XML с заказами сайт отдаёт в ответе на запрос query, а имя здесь условное1С не находит контрагента, организацию, склад или товар для строки: документ не создаётся или создаётся частично. Путают Ид и номер: после смены платформы сайта номера пересекаются со старыми
Документы 1С → сайтТе же заказы с реквизитами: проведён ли документ, номер и дата в 1С, признаки оплаты и отгрузки, статус. Состав реквизитов зависит от платформыНет сопоставления статусов 1С и сайта: статус «застревает». Реквизиты, которых сайт не ждёт, молча игнорируются

Ключ ко всей схеме — идентификатор Ид, обычно GUID. По нему сайт понимает, что это тот же товар, а не новый. Предложение с характеристикой получает Ид вида «Ид товара # Ид характеристики». Пока Ид стабилен, обмен обновляет записи. Как только он поменялся, для сайта это другой объект.

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

Как проходит один сеанс обмена 1С с сайтом

Ниже — общая последовательность на примере 1С-Битрикс; у других платформ логика та же, а детали отличаются. В адресе запроса обычно два параметра: type (catalog для каталога, sale для заказов) и mode (шаг). В Битриксе точка входа — скрипт вида /bitrix/admin/1c_exchange.php.

Каталог: type=catalog

  1. checkauth. 1С отправляет логин и пароль пользователя сайта (обычная HTTP-аутентификация). Сайт отвечает success и отдаёт данные сессии: имя и значение cookie, которые 1С подставляет в следующие запросы.
  2. init. 1С спрашивает условия. Сайт сообщает, принимает ли он архив zip и какой максимальный размер одной порции файла разрешён.
  3. file. 1С передаёт файлы: XML и картинки, при необходимости архивом и порциями не больше заданного лимита. Сайт складывает их во временный каталог и на каждую порцию отвечает success.
  4. import. 1С просит разобрать конкретный файл: сначала каталог, потом предложения. Сайт разбирает его шагами; пока работа не закончена, отвечает progress, и 1С повторяет запрос. В конце приходит success.
  5. Завершающие шаги. В части реализаций есть дополнительные режимы, например деактивация товаров, которых нет в полной выгрузке. Их состав смотрите в документации платформы.

Заказы: type=sale

  1. checkauth и init — как выше.
  2. query. 1С просит заказы. Сайт отвечает XML с заказами, которые ещё не выгружены (в части реализаций — и с теми, что изменились после выгрузки).
  3. 1С разбирает XML и создаёт или обновляет у себя документы заказа покупателя.
  4. success. 1С сообщает, что заказы получены. Только после этого сайт помечает их выгруженными.
  5. file и import. 1С отправляет на сайт файл с изменениями по заказам: статусы, оплата, отгрузка. Порядок шагов зависит от конфигурации 1С.

Самое хрупкое место — пара «получили заказы» и «подтвердили получение». Если связь оборвалась между ними, 1С заказы уже создала, а сайт об этом не знает и пришлёт те же заказы снова. Дальше всё решает, как принимающая сторона ищет дубли: по Ид заказа или по номеру.

И ещё одна особенность: ответы протокола текстовые (success, progress, failure и строка с сообщением). В типовой реализации сбой нередко приходит как обычный ответ с кодом 200 и словом failure в теле, поэтому мониторинг по кодам ответа его не заметит. Читайте тело ответа.

Что стандартный обмен делает хорошо

  • Не нужно писать с нуля. Поддержка протокола уже есть в 1С и во многих платформах, в типовом случае это настройка, а не разработка.
  • Файлы читаются глазами. XML можно открыть, посмотреть Ид, цену, остаток и понять, что именно пришло. Для разбора сбоев это большое преимущество.
  • Порции и шаги. Передача по частям и импорт по шагам с ответом progress переживают долгие операции и лимиты на один запрос.
  • Обмен в обе стороны. Каталог и цены идут на сайт, заказы — в 1С, статусы — обратно.
  • Предсказуемость. Для типового магазина (один каталог, одна основная цена, один-два склада, умеренные требования к скорости) поведение обмена понятно заранее.

Пока магазин укладывается в эту рамку, менять формат нет смысла: вкладываться стоит в журналы, мониторинг и сверку.

Жизненный цикл заказа через обмен

Заказ проходит через обмен несколько раз: на сайте он создаётся, в 1С исполняется, на сайт возвращается статусами. На каждом переходе есть свой способ его потерять.

ЭтапЧто происходитЧто может пойти не так
Оформление на сайтеЗаказ получает номер и внутренний идентификатор. В обмен он попадёт только при следующем сеансеФильтр выгрузки исключает заказ (статус, платёжная система, сайт). Сеанс давно не запускался
Выгрузка в 1ССайт отдаёт XML, 1С создаёт заказ покупателяНет контрагента, организации, склада или товара для строки. Документ создан частично. В выгрузке доставка и скидки могут идти отдельными строками, а для них в 1С нужна своя номенклатура
Подтверждение получения1С сообщает, что получила; сайт помечает заказы выгруженнымиПодтверждение не дошло: заказ уйдёт снова. При привязке по номеру получится дубль
Статусы на сайт1С передаёт реквизиты заказа, сайт обновляет статус и признаки оплаты и отгрузкиНе сопоставлены статусы. Реквизит, который сайт не ждёт, игнорируется
Работа в 1С и правка после выгрузкиРезерв, счёт, оплата, отгрузка. Заказ может поменять менеджер в 1С, клиент или оператор на сайтеПравки в двух местах: как правило, остаётся то, что попало в обмен позже, но правило зависит от платформы и настроек. Состав в 1С и на сайте расходится, сайт показывает старое до следующего сеанса
Отмена, частичная отгрузка, возвратВ 1С это отдельные документы и действияОтмену платформы обычно принимают признаком или статусом заказа. Частичная отгрузка и возврат — отдельные документы 1С, и передаются ли они на сайт, зависит от настроек и платформы. Проверьте каждый сценарий на копии и не рассчитывайте на него по умолчанию

Выгрузка товаров из 1С на сайт: где формат упирается в пределы

Проблемы начинаются, когда реальный магазин сложнее типовой модели. Вот места, где формат и протокол чаще всего оказываются тесными.

  • Одна модель каталога. 1С передаёт дерево групп, товары и свойства так, как они заведены в учёте. Сайту нужны свои рубрики, описания, SEO-поля, сопутствующие товары. Если не договориться, какие поля обновляет обмен, а какие ведут на сайте, ручные правки контента затрутся при очередной выгрузке. Настройка «что перезаписывать» зависит от платформы.
  • Характеристики и торговые предложения. Размер и цвет в 1С — характеристики, на сайте — торговые предложения одного товара (или отдельные товары, в зависимости от платформы). Типичный сбой: характеристики в 1С включили позже, Ид предложений изменились, и сайт может создать дубли.
  • Склады и типы цен. Файл предложений несёт все выбранные склады и типы цен, а что они значат для сайта, решает настройка соответствия. «Общий остаток» из нескольких складов — это правило (сумма? только основной склад? за вычетом резерва?), и его нужно записать.
  • Большие каталоги и картинки. Один сеанс выгружает всё сразу. Чем больше каталог, тем ближе сеанс к лимитам времени и памяти, а картинки обычно самая тяжёлая часть выгрузки. Оборвался на середине — часть данных обновилась, часть нет, и узнать об этом можно только сверкой.
  • Частичные обновления. В режиме «только изменения» в файл попадает то, что поменялось с прошлого сеанса. Если сайт принял файл, но разобрал не до конца, 1С может считать изменения доставленными, и сами они не повторятся. Поэтому полную выгрузку делают периодически, как страховку.
  • Удаления. Скрытие или удаление товара в 1С не обязано убрать его с сайта: придёт ли признак удаления (в XML он может передаваться статусом товара) и что с ним сделает платформа, зависит от конфигурации и настроек. В полной выгрузке платформа может деактивировать товары, которых нет в файле, — но это настройка платформы, а не свойство формата. В частичной выгрузке отсутствие товара не значит ничего.
  • Идентификаторы. Копия базы, перезаливка справочника, слияние дублей, второй источник товаров — всё это меняет или дублирует Ид. Это одна из самых дорогих «тихих» поломок: данные приходят, но не к тем записям.
  • Нет квитанции по строкам. Ответ протокола относится к шагу целиком: success или failure. Формат передаёт текущее состояние заказа, а не историю правок. Ответ на вопрос «какая из тысяч позиций не прошла» даёт журнал платформы, а не формат.
Тайм-ауты и память. Особенно заметны на недорогом хостинге: лимиты на время работы скрипта, память, размер загружаемого файла, а у обратного прокси — на размер тела запроса и время ожидания ответа. Они срабатывают на больших выгрузках, а не на тестовых десяти товарах, поэтому тест на малом объёме мало что доказывает.

Сбои обмена 1С с сайтом: симптом, причина, где смотреть

Таблица ниже — рабочая шпаргалка. Причины перечислены как гипотезы для проверки, а не как диагноз: для вашей платформы и версии 1С конкретика отличается.

СимптомВероятная причинаГде смотреть
1С сообщает об ошибке авторизацииНеверный логин или пароль, у пользователя нет права на обмен. При PHP в режиме CGI или FastCGI заголовок авторизации иногда не доходит до скриптаЖурнал регистрации 1С, журнал ошибок веб-сервера, настройки веб-сервера
Обрыв на передаче файлов, ответ 413, 502 или 504Размер порции больше разрешённого, лимит тела запроса у прокси, тайм-аутЖурналы прокси и веб-сервера, значение лимита, которое назвал сайт на шаге init
Импорт «крутится бесконечно» или падает на одном и том же местеСкрипту не хватает времени или памяти. Или конкретный товар с некорректными даннымиЖурнал ошибок PHP, размер и время шага импорта, XML вокруг места падения
Товары есть, цен нетПредложения не загружены, не сопоставлен тип цены, Ид предложения не находит товарФайл предложений, настройка соответствия типов цен
Остаток нулевой или не меняетсяСклад не сопоставлен, остаток считается по другому правилу, предложения по характеристикам не связаны с товаромФайл предложений, правило расчёта остатка, настройки складов
Появились дубли товаровИзменились Ид (копия базы, пересоздание, включили характеристики) или два источника товаровСравнение Ид в 1С и на сайте, история изменений справочника
Картинки не приехалиНе дошли порции файлов, лимит размера, другой путь или имя файлаВременный каталог загрузки, размер порций, журнал веб-сервера
Заказы не попадают в 1СЗаказ не подходит под фильтр выгрузки или уже помечен выгруженным. Или 1С не может разобрать документНастройки выгрузки заказов на сайте, журнал регистрации 1С
Заказы приходят в 1С дваждыПодтверждение получения не дошло, дубли ищутся по номеру, а не по ИдЖурнал сеансов, правило поиска существующего заказа
Статус заказа не обновляется на сайтеНет сопоставления статусов, 1С не включила заказ в изменения, сайт не принял файлТаблица статусов, файл изменений, журнал платформы
Авторизация проходит, а следующий запрос не принимаетсяРедирект с http на https или между адресами с www и без: запрос или авторизация могут потеряться. Защита от ботов или WAF может резать запросы 1С. За балансировщиком cookie сеанса может попасть на сервер, где такой сессии нетЖурналы веб-сервера и прокси по цепочке запросов одного сеанса: коды ответов, редиректы, приходит ли cookie. Адрес обмена в настройках 1С — сразу в окончательной форме
Кракозябры или ошибка разбора XMLНе та кодировка, недопустимые символы в названиях (копирование из документов), обрезанный файлСам файл: открыть, проверить парсером, найти место ошибки

Как искать, когда симптома в таблице нет:

  1. Сохраните сеанс целиком: время, файлы, ответы сайта. Следующий успешный сеанс сотрёт следы.
  2. Определите шаг, на котором остановились: авторизация, передача, разбор каталога, разбор предложений, заказы. Это сразу сужает поиск.
  3. Откройте журнал 1С и журналы сайта за то же время и сопоставьте записи. Не нашли ошибку на одной стороне — она на другой.
  4. Откройте сам файл. Ищите конкретный товар или заказ по Ид, а не «что-то странное вообще».
  5. Воспроизведите на копии. Исправление, проверенное только на боевых данных, — это следующий инцидент.

Когда остаться на CommerceML, а когда уходить

Выбор не «формат или API», а «что должно работать быстро и надёжно, а что может ходить пакетом». Чаще всего получается сочетание.

СитуацияОстаёмся на CommerceML?Что вместо или рядом
Типовой магазин: один каталог, небольшой или редко меняющийся, цены и остатки раз в десятки минут устраиваютДаЖурналы, мониторинг сеансов, ночная сверка, страховочная полная выгрузка
Остатки нужны почти сразу после продажиДля каталога — да, для остатков — нетОтдельный канал остатков: HTTP-сервис 1С или очередь событий; каталог остаётся пакетным
Свои правила цен, сложные характеристики, много складов и типов ценЧастичноКаталог оставить, расчёт цен и остатков вынести в собственный слой обмена
Несколько каналов: сайт, маркетплейсы, CRM с общими остаткамиНе как единственный способОбщий слой обмена с очередью и журналом; CommerceML остаётся одним из выходов
Сайт самописный или платформа не поддерживает форматНе обязательноДва пути. Реализовать серверную часть протокола на стороне сайта: 1С остаётся типовой, но протокол нужно воспроизвести целиком. Или сделать интерфейс сайта по HTTP и обмен через HTTP-сервис 1С: это доработка на стороне 1С, и её придётся сопровождать при обновлениях. Выбор определяют стоимость и сроки, а не принцип
Нужны повторы, подтверждения по записям, ручной разбор ошибокНетОчередь: сообщение, повтор при сбое, журнал, безопасное повторное применение

HTTP-сервисы — механизм самой платформы 1С:Предприятие 8: через них можно отдавать и принимать данные в нужной вам структуре, без файловых пакетов. Доступность и возможности зависят от релиза платформы, уточняйте для вашей версии.

Обмен на очереди устроен иначе. 1С или сайт кладут в очередь событие вроде «остаток изменился», брокер хранит его, адаптер доставляет получателю, а при сбое повторяет. Обработка устроена так, чтобы повтор того же сообщения не создавал дубль. Взамен вы получаете журнал по каждой записи и возможность разбирать ошибки по одной. Как это выглядит на практике, когда каналов несколько, показано на странице про интеграцию 1С с маркетплейсами, а как выбрать между схемами — в материале что выбрать для интеграции 1С с маркетплейсами.

Про общие принципы разделения ролей между системами — в материале про схемы интеграции 1С с CRM, про остатки на площадках — в статье про расхождение остатков.

Чек-лист перед запуском обмена 1С с сайтом

  1. Распределить роли. Кто главный по каждому типу данных. Пример схемы: каталог и цены — 1С, контент — сайт, заказ до выгрузки — сайт, после — 1С. Ваша схема может быть другой, но записанной.
  2. Записать правила. Какой тип цены уходит на сайт, какие склады складываются в остаток, что считается «доступно к заказу».
  3. Проверить Ид. Нет ли дублей номенклатуры, один каталог — один источник, Ид не пересоздавались при переносах.
  4. Развернуть тестовый контур. Копия 1С, копия сайта, отдельный домен (см. примечание ниже).
  5. Прогнать полную выгрузку на реальном объёме, а не на десяти товарах: время, память, размер порций.
  6. Согласовать лимиты. Размер загрузки и время выполнения скрипта на сайте, размер тела запроса и тайм-ауты у прокси и веб-сервера, размер порции, которую назначает сайт.
  7. Сопоставить статусы, способы оплаты и доставки сайта с видами в 1С. Прогнать заказ каждого вида: онлайн-оплата, оплата при получении, самовывоз, доставка, скидка, комплект.
  8. Проверить сценарии с изменениями: правка заказа после выгрузки, отмена, частичная отгрузка, возврат.
  9. Включить журналы в 1С и на сайте и решить, кто их читает и сколько хранятся.
  10. Сделать резервную копию боевого сайта перед первой полной выгрузкой и описать, как вернуться назад.
  11. Настроить мониторинг: результат и длительность каждого сеанса, давность последнего успешного, оповещение при пропуске.
Про проверку на копии. Копию базы 1С нельзя подключать к боевому сайту. У неё те же Ид, те же заказы и тот же адрес обмена в настройках: тестовая выгрузка может перезаписать каталог или затащить в боевой магазин тестовые данные. В современных конфигурациях при первом запуске копии обычно спрашивают, скопирована база или перемещена, но на это не надейтесь: проверьте адрес сайта в настройках обмена и остановите регламентные задания вручную. Копия сайта — отдельная база и отдельный домен, закрытый от индексации, с отключёнными письмами клиентам, платежами и внешними интеграциями.

Сверка: как узнать, что обмен не врёт

Работающий сеанс не значит верные данные. Нужна независимая проверка: отдельный скрипт читает оба источника и сравнивает, а не сам обмен проверяет себя. Иначе вы проверяете тот же код, который и ломается.

Что сверяемКакКак часто
КаталогСравнить списки Ид: активные товары в 1С и на сайте. Отдельно — товары сайта без Ид из 1С и наоборотНочью, после выгрузки каталога
ЦеныПо каждому типу цен: выборка и все ходовые позиции. Расхождения выводить списком, а не числомРаз в сутки
ОстаткиОстаток «к продаже» в 1С против остатка на сайте по ходовым позициям, с учётом правила расчётаЧаще цен; для быстрых позиций — в течение дня
Заказы и статусыКаждому заказу сайта с пометкой «выгружен» — документ в 1С с тем же Ид, совпадают сумма и состав. Отдельно: заказы, у которых статус на сайте отстаёт от документа в 1С дольше допустимого срокаРаз в сутки; статусы — чаще
Сам обменРезультат и длительность сеансов, число ошибок, давность последнего успешного сеансаПостоянно, с оповещением

Условный пример (числа условные): в 1С четыре тысячи активных товаров, на сайте на десять меньше. Отчёт «десять расхождений» бесполезен. Нужен список из десяти Ид с названиями и причиной каждой: отсутствует на сайте, отключён, продублирован. Число без списка ничего не даёт.

Что делаем мы: разбор обмена 1С с сайтом

Обычная ситуация: обмен уже работает, но перестал справляться — теряются остатки, заказы приходят дважды, выгрузка не укладывается в окно. Начинаем с разбора: читаем журналы и файлы, записываем схему «кто главный», собираем список расхождений. Итогом становится решение: чинить настройку, расширять обмен или строить отдельный слой. Подробнее — на странице интеграции сайта с 1С и в обзоре интеграций 1С, а общий список направлений — в услуге «Интеграции и сопровождение».

Ориентиры по стоимости (по тарифам, не фиксированная смета): обследование обмена — от 200 000 ₽ за один-два процесса, 2–3 недели; сумма вычитается из следующего этапа. Типовой обмен 1С — 150 000–350 000 ₽, базовый односторонний обмен — от 150 000 ₽. Всё сделанное остаётся у вас по акту: исходники, конфигурации и журналы. Работаем в вашем контуре и вашем репозитории, договорённости фиксируем письменно до начала работ, а в конце каждого этапа вы вправе остановиться.

Частые вопросы

CommerceML что это такое простыми словами?

CommerceML — открытый XML-формат, который 1С использует для обмена с интернет-магазином: через него передаются каталог, цены, остатки и заказы. Это договорённость о том, как выглядят файлы и в каком порядке ходят HTTP-запросы. Сам по себе формат ничего не делает: нужна поддержка и в 1С, и на стороне сайта.

Чем отличаются import.xml, offers.xml и orders.xml?

import.xml несёт классификатор и каталог: группы, свойства, товары с их Ид, артикулами и ссылками на картинки. offers.xml — пакет предложений: типы цен, склады, цены и остатки по каждому предложению. Заказы (условно orders.xml) — это документы: сайт отдаёт их 1С в ответе на запрос query, а обратные данные по статусам 1С присылает файлом. Названия и нарезка файлов зависят от конфигурации и платформы.

Как выгрузить товары из 1С на сайт?

Нужны три вещи: поддержка обмена на стороне сайта (в 1С-Битрикс она встроена в модули магазина, набор возможностей зависит от редакции и версии; для других CMS чаще ставят отдельный модуль), настройка обмена в 1С — адрес сайта, логин и пароль пользователя сайта, состав выгрузки — и запуск вручную или по расписанию. Расположение настроек зависит от конфигурации и релиза 1С, поэтому сверяйтесь с документацией. Первую выгрузку делайте на копии.

Почему не выгружаются товары из 1С на сайт?

Типичные причины лежат в пяти местах: не прошла авторизация, файл не загрузился из-за лимитов размера или времени, XML не разобрался из-за ошибки в данных, предложения не связались с товарами по Ид, либо на сайте не сопоставлены тип цены или склад. Начните с журнала регистрации 1С и журнала ошибок веб-сервера, затем откройте сам файл обмена.

Почему заказы с сайта не попадают в 1С или приходят дважды?

Заказ не уходит, если сайт не считает его подлежащим выгрузке (фильтр по статусу, платёжной системе или сайту) либо 1С не может разобрать документ: нет контрагента, организации, склада или товара. Дубли появляются, когда подтверждение получения не дошло до сайта и заказ ушёл повторно, а принимающая сторона привязывает его по номеру, а не по идентификатору.

Можно ли выгружать остатки чаще, чем весь каталог?

Если платформа и конфигурация это позволяют — да: каталог меняется редко, а цены и остатки часто, поэтому их выгружают отдельными, более частыми сеансами. Но формат рассчитан на пакетный обмен по расписанию. Для почти мгновенных остатков обычно строят отдельный канал: HTTP-сервис 1С или очередь событий.

Когда CommerceML не подходит и нужен API?

Когда нужны почти мгновенные остатки, общие остатки для нескольких каналов продаж, подтверждения и повторы по каждой записи, собственная логика цен или сложная модель характеристик, а также когда сайт не поддерживает формат. Тогда обмен строят через HTTP-сервисы 1С, интерфейс сайта или очередь сообщений, а CommerceML оставляют там, где он справляется.

Как проверить обмен 1С с сайтом, не затронув боевой магазин?

Не подключайте копию базы 1С к боевому сайту: у неё те же идентификаторы, заказы и настройки адреса обмена. Поднимите копию сайта на отдельном домене, закройте её от индексации, отключите письма клиентам и платежи, остановите регламентные задания в копии 1С и проверьте, куда указывает адрес обмена. Перед первой полной выгрузкой на боевой сайт сделайте резервную копию его базы.