К другим статьям
1С-БитриксОбмен даннымиЦеныОстатки
Для бизнеса

Цены и остатки на сайте не совпадают с 1С: как найти причину

Цены и остатки на сайте не совпадают с 1С: как найти причину

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

Ниже — рабочий порядок, а не универсальная кнопка «перезапустить обмен». Типовой CommerceML, расписание и состав пакетов разобраны в чек-листе обмена 1С и Битрикс. Здесь — только расхождение цены и количества.

Что считать расхождением

Не всякая разница — ошибка обмена. На сайте может показываться другая сущность, чем в отчёте 1С.

Зафиксируйте для одной позиции:

  • артикул и внешний идентификатор (XML_ID), а не только название;
  • вид цены: розница, опт, акция, цена для авторизованного;
  • склад или группа складов и учитывается ли резерв;
  • НДС: цена с налогом или без, округление;
  • момент: сразу после обмена, через час, только у части покупателей.

Если в 1С смотрят «себестоимость», а на сайте «розница для региона», системы честно показывают разные числа. Это не баг транспорта, а несогласованные владельцы полей.

Сначала один SKU, не весь каталог

Полный перезапуск обмена маскирует причину и даёт нагрузку на прод. Выберите товар, который точно расходится, и ответьте на три вопроса.

  1. Последний обмен эту позицию трогал? В журнале 1С и в логе Битрикс должно быть время, файл или сообщение и результат по этой сущности. Если пакета не было — проблема в отборе, расписании или фильтре выгрузки, а не в разборе XML.
  2. На сайт пришло другое значение или пришло верное, а показалось старое? Тогда дальше кеш, композит, CDN, шаблон и тип цены в компоненте.
  3. Расходится цена, остаток или оба? Это часто разные ветки: виды цен и предложения против складов, резервов и доступности к покупке.

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

Цены: где обычно ломается смысл

Битрикс хранит несколько типов цен. Обмен может обновить один и не тронуть другой. Покупатель при этом видит тип, который в шаблоне каталога выбран по группе, региону или авторизации.

Проверьте:

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

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

Остатки: количество в учёте не равно кнопке «купить»

Остаток в 1С часто включает резерв, товар в пути или несколько складов. Сайт может показывать сумму, доступность одного склада или скрывать позицию при нуле.

Зафиксируйте правило доступности: скрывать, запрещать заказ, предзаказ, срок поставки. Пока оно не записано, любая «правка обмена» будет спорить с витриной.

Типичные причины:

  • на сайт выгружается склад, который не привязан к каталогу;
  • резерв учитывается в 1С и ещё раз в корзине;
  • нулевой остаток приходит, но кеш раздела держит «в наличии»;
  • торговые предложения обновляются, а остаток висит на родителе или наоборот.

Для многосклада и нескольких типов цен возможности редакции нужно сверять с лицензией, например «Бизнес». Наличие функции в коробке не означает, что конкретный шаблон её использует.

Кеш и «починилось само через два часа»

Если в карточке после обмена ещё старая цена, а в админке товара уже новая, обмен отработал. Не обновляется витрина: компонент, композит, ключ кеша без типа цены или склада, слишком широкая или слишком редкая инвалидизация.

Не лечите это полным сбросом кеша сайта на постоянной основе. Нужно, чтобы после импорта цены и остатка сбрасывался ключ затронутых страниц, а не весь каталог на каждый хит.

Журналы, без которых спор бесполезен

На обеих сторонах нужны время, направление, идентификатор запуска, сколько цен и остатков обновлено, предупреждения по сущности. Сообщения «ошибка импорта» недостаточно.

Сверьте часовые пояса сервера 1С, сайта и cron. «Обмен в 06:00» на одной машине может быть другим временем на другой. Для заказов, которые из‑за тех же логов «не уходят» обратно, порядок другой: заказы с сайта не уходят в 1С.

Что не делать в первый час

Не переписывать модуль обмена с нуля. Не менять XML_ID у живого каталога без плана сопоставления: появятся дубли, а старые URL и остатки разъедутся сильнее. Не запускать полную выгрузку на проде в часы пик, пока не доказано, что проблема в объёме пакета.

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

Итог

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

Похожая задача?

Разберём вашу ситуацию с 1С-Битрикс

Опишите, что сейчас не работает или что нужно сделать — отвечу с планом и ориентиром по срокам.