Цены и остатки на сайте не совпадают с 1С, когда расходится не «Битрикс вообще», а конкретное правило: вид цены, склад, резерв, НДС, кеш или последний пакет обмена. Сначала берут один артикул, сравнивают 1С, карточку на сайте и журнал выгрузки. Только потом решают, чинить сопоставление, очередь или отображение.
Ниже — рабочий порядок, а не универсальная кнопка «перезапустить обмен». Типовой CommerceML, расписание и состав пакетов разобраны в чек-листе обмена 1С и Битрикс. Здесь — только расхождение цены и количества.
Что считать расхождением
Не всякая разница — ошибка обмена. На сайте может показываться другая сущность, чем в отчёте 1С.
Зафиксируйте для одной позиции:
- артикул и внешний идентификатор (
XML_ID), а не только название; - вид цены: розница, опт, акция, цена для авторизованного;
- склад или группа складов и учитывается ли резерв;
- НДС: цена с налогом или без, округление;
- момент: сразу после обмена, через час, только у части покупателей.
Если в 1С смотрят «себестоимость», а на сайте «розница для региона», системы честно показывают разные числа. Это не баг транспорта, а несогласованные владельцы полей.
Сначала один SKU, не весь каталог
Полный перезапуск обмена маскирует причину и даёт нагрузку на прод. Выберите товар, который точно расходится, и ответьте на три вопроса.
- Последний обмен эту позицию трогал? В журнале 1С и в логе Битрикс должно быть время, файл или сообщение и результат по этой сущности. Если пакета не было — проблема в отборе, расписании или фильтре выгрузки, а не в разборе XML.
- На сайт пришло другое значение или пришло верное, а показалось старое? Тогда дальше кеш, композит, CDN, шаблон и тип цены в компоненте.
- Расходится цена, остаток или оба? Это часто разные ветки: виды цен и предложения против складов, резервов и доступности к покупке.
Повторите проверку на втором товаре из той же группы и на третьем из другой. Если ломается один SKU — ищите идентификатор и исключение. Если группа — правило вида цены, склада или свойства.
Цены: где обычно ломается смысл
Битрикс хранит несколько типов цен. Обмен может обновить один и не тронуть другой. Покупатель при этом видит тип, который в шаблоне каталога выбран по группе, региону или авторизации.
Проверьте:
- сопоставление видов цен 1С и типов цен сайта;
- пустое значение: сайт оставляет старую цену, подставляет базовую или показывает ноль;
- частичный пакет: предложения пришли, цены — нет, или наоборот;
- валюта и курс, если 1С и сайт считают в разных единицах;
- скидки и правила работы с корзиной: «цена в карточке» и «цена в заказе» могут расходиться даже при верном типе цены.
Особенно опасен обмен, который «успешен» по статусу, но в предупреждениях пропускает строки. Транспорт зелёный, витрина — нет. Смотрите не только код завершения, но число обновлённых цен за прогон.
Остатки: количество в учёте не равно кнопке «купить»
Остаток в 1С часто включает резерв, товар в пути или несколько складов. Сайт может показывать сумму, доступность одного склада или скрывать позицию при нуле.
Зафиксируйте правило доступности: скрывать, запрещать заказ, предзаказ, срок поставки. Пока оно не записано, любая «правка обмена» будет спорить с витриной.
Типичные причины:
- на сайт выгружается склад, который не привязан к каталогу;
- резерв учитывается в 1С и ещё раз в корзине;
- нулевой остаток приходит, но кеш раздела держит «в наличии»;
- торговые предложения обновляются, а остаток висит на родителе или наоборот.
Для многосклада и нескольких типов цен возможности редакции нужно сверять с лицензией, например «Бизнес». Наличие функции в коробке не означает, что конкретный шаблон её использует.
Кеш и «починилось само через два часа»
Если в карточке после обмена ещё старая цена, а в админке товара уже новая, обмен отработал. Не обновляется витрина: компонент, композит, ключ кеша без типа цены или склада, слишком широкая или слишком редкая инвалидизация.
Не лечите это полным сбросом кеша сайта на постоянной основе. Нужно, чтобы после импорта цены и остатка сбрасывался ключ затронутых страниц, а не весь каталог на каждый хит.
Журналы, без которых спор бесполезен
На обеих сторонах нужны время, направление, идентификатор запуска, сколько цен и остатков обновлено, предупреждения по сущности. Сообщения «ошибка импорта» недостаточно.
Сверьте часовые пояса сервера 1С, сайта и cron. «Обмен в 06:00» на одной машине может быть другим временем на другой. Для заказов, которые из‑за тех же логов «не уходят» обратно, порядок другой: заказы с сайта не уходят в 1С.
Что не делать в первый час
Не переписывать модуль обмена с нуля. Не менять XML_ID у живого каталога без плана сопоставления: появятся дубли, а старые URL и остатки разъедутся сильнее. Не запускать полную выгрузку на проде в часы пик, пока не доказано, что проблема в объёме пакета.
Безопасный минимум: один SKU, журналы, вид цены, склад, кеш витрины. Если после этого картина не сходится, это уже разбор правил и кода, а не «ещё раз нажать выгрузку». Формат такой работы — на странице интеграции 1С и сайта.
Итог
Расхождение цены или остатка — это почти всегда рассинхрон правила, а не «Битрикс сломался». Сначала доказывают, что обмен позицию видел, какое значение записал и что показала витрина. Когда эти три слоя названы, можно чинить отбор в 1С, разбор пакета или кеш, а не весь контур сразу.



