Цены и остатки не обновляются после обмена
Обмен прошёл, ошибок нет, товары на месте — а цены старые или остатки нулевые. Искать здесь нужно не ошибку, а место, где данные потерялись: таких мест три — 1С, передача, витрина.
Сначала: докуда дошли данные
Журнал обмена показывает этапы по отдельности. Строки вида «Выгрузка типов цен в XML завершено. Выгружено N» и «Выгрузка остатков в XML завершено» говорят, дошло ли дело до цен и остатков вообще. Если таких строк нет — проблема в 1С, и дальше на сайте искать нечего.
Дальше проверяйте по цепочке:
- Карточка товара в административной части сайта — новая цена там есть?
- Витрина в режиме инкогнито — там тоже новая?
- Корзина — цена не меняется при добавлении?
Если в карточке новое, а на витрине старое — это кеш, и всё остальное в этой инструкции вам не нужно.
Регистр изменений в 1С
1С не отправляет всё подряд: она ведёт регистр изменений, куда попадает то, что нужно выгрузить. Отсюда два типовых случая.
- Данные не зарегистрированы. Цена изменилась документом, который не регистрирует изменения для обмена, — и сайт о ней не узнает. Лечится принудительной регистрацией или полной выгрузкой.
- Регистрация обгоняет отправку. На складах с частым движением остатки регистрируются непрерывно, а обмен не успевает их отдавать. Очередь перезаписывается, и часть изменений не доезжает. Симптом характерный: остатки обновляются, но выборочно и с отставанием.
Во втором случае помогает разделение: отдельный обмен только остатками, короткий и частый, и отдельный — номенклатурой, свойствами и картинками, редкий и тяжёлый. Смешивать их в одном расписании и есть главная ошибка.
Типы цен
Самая частая причина «цены не обновились» на стороне сопоставления. В 1С выгружается конкретный тип цены, на сайте он должен существовать и быть сопоставлен с нужным.
- Тип цены переименовали в 1С — сайт создаст новый тип, а витрина продолжит показывать старый, пустой.
- Выгружается несколько типов, а покупатель видит не тот: цена обновилась, но показывается другая.
- Цена выгружается с иной валютой или единицей измерения — число приезжает, но выглядит бессмысленно.
Проверяется за минуту: откройте карточку товара в административной части и посмотрите все типы цен, а не только тот, что на витрине.
Остатки и склады
Когда включён складской учёт, остаток считается по складам, и ломается это тремя способами:
- Склады не сопоставлены. 1С выгружает остатки по своим складам, на сайте их нет — остаток нулевой.
- Витрина смотрит не на тот склад. Данные есть, но показывается другой.
- Единицы измерения расходятся. Штуки против упаковок дают остатки, которые выглядят случайными.
Отдельный случай — учёт по характеристикам: остатки и цены ведутся на уровне торговых предложений, и если сопоставление характеристик сбилось, данные приезжают в пустоту.
Кеш витрины
После обмена кеш компонентов каталога нужно сбросить, иначе посетители видят сохранённую страницу. Штатный обмен делает это сам; если обмен дорабатывали, шаг могли потерять.
Проверка простая: сбросьте кеш вручную. Изменения появились — чините обмен, а не чистите кеш каждый раз. Про слои кеша есть отдельная инструкция.
Если нужно обновлять остатки часто
Запрос «хотим обновлять остатки каждые пять минут» звучит часто, и штатный обмен для этого не предназначен: он передаёт слишком много лишнего. Рабочие варианты:
- отдельная выгрузка только остатков, запускаемая чаще основной;
- обмен через промежуточный сервис, который принимает данные из 1С и отдаёт их сайту;
- доработка, которая шлёт изменения точечно при движении по складу.
Выбор зависит от того, насколько критична актуальность: интернет-магазину с дефицитными позициями нужна одна схема, оптовому каталогу — другая.
Как убедиться, что починилось
Возьмите три товара: обычный, с несколькими типами цен и с нулевым остатком. Измените их в 1С, прогоните обмен и проверьте всю цепочку — карточка, витрина в инкогнито, корзина. Если сходится на всех трёх, значит дело не в везении.
Частые вопросы
Цены обновились в административной части, а на витрине старые.
Это кеш компонентов каталога. Сбросьте его и проверьте страницу в режиме инкогнито. Если после ручной очистки всё появляется — значит обмен не сбрасывает кеш сам, и чинить нужно обмен.
Остатки в 1С есть, на сайте нули.
Проверьте сопоставление складов и то, на какой склад смотрит витрина, а также единицы измерения. При учёте по характеристикам остатки ведутся на уровне торговых предложений — если сопоставление сбилось, данные приезжают в пустоту.
Обновились цены только у части товаров.
У остальных другой тип цены, они не попали в фильтр выгрузки или их изменения не зарегистрировались в 1С. Посмотрите в карточке все типы цен, а не только витринный.
Остатки обновляются выборочно и с отставанием.
Похоже, что регистрация изменений обгоняет отправку: на складе с частым движением очередь перезаписывается быстрее, чем обмен успевает её отдать. Помогает отдельный частый обмен только остатками.
Как обновлять остатки каждые пять минут?
Штатный обмен для этого не предназначен — он передаёт слишком много лишнего. Делают отдельную выгрузку только остатков, промежуточный сервис или доработку, которая шлёт изменения при движении по складу.
С чего начинать разбор?
С журнала обмена: строки про выгрузку типов цен и остатков показывают, дошло ли дело до них вообще. Нет таких строк — проблема в 1С, и на сайте искать нечего.