Если в кабинете Ozon остаток не такой, как на сайте, сначала разведите сборку на сайте и ответ площадки. Модуль не подставляет одно число сразу во все склады. Каждый склад из профиля уходит отдельным запросом /v2/products/stocks.
1. «Проверить выгрузку» — это не отправка на Ozon
Кнопка считает поля локально. Массив вроде:
[STOCKS] => Array (
[1020005020237210] => 0
[1020005020236680] => 0
)
это DATA_MORE на сайте, не запрос в кабинет.
/v2/products/stocks вызывается только на реальном прогоне (cron, агент или «Запустить»). Если шаг оборвался раньше, нули из превью на Express и FBS не попадут.
В режиме «только остатки» в том же окне написано, что данные служебные и в прямом виде не выгружаются. Это не ошибка модуля.
Одно и то же поле каталога на оба склада в превью — нормальная настройка. Два нуля в превью не доказывают, что Ozon принял два нуля.
2. Куда смотреть: лог профиля, не кабинет и не превью
Нужен профиль остатков (формат Ozon API, режим только остатков и цен), не профиль карточек.
- Откройте профиль → вкладка «Лог и история».
- Включите «Режим отладки для данного профиля» (не глобальную отладку в настройках модуля).
- Нажмите «Применить». Без сохранения галка не действует.
- Запустите один прогон.
- В логе найдите артикул /
offer_idи строки Stocks (V2) и Result for /v2/products/stocks.
Пока галка отладки снята, JSON ответа Ozon в лог не пишется. Останутся только «Запущен автоматический экспорт» / «Процесс завершен».
После разбора галку отладки снимите и снова нажмите «Применить». Иначе лог быстро разрастётся.
3. Что значит ответ Ozon
updated смотрят только в логе после прогона с отладкой. В «Проверить выгрузку» и в кабинете Ozon этой строки нет.
| Что в логе | Что это значит |
|---|---|
"updated": true | Ozon принял значение (в том числе ноль) |
"updated": false | площадка отклонила изменение; ниже будет код |
склада нет в Stocks (V2) | этот warehouse_id в прогоне не уходил |
PRODUCT_IS_ARCHIVED | карточка в архиве; плюсовой остаток Ozon не примет, пока карточку не вернуть |
NOT_FOUND | offer_id ещё нет в кабинете или товар не processed |
лимит цен / ResourceExhausted | в прогон попали цены и упёрлись в лимит; остатки могли не дойти |
4. Почему FBS уже 0, а Express ещё 1
- Превью ≠ прогон. Ноль на Express появится, только если в логе того прогона есть оба
warehouse_idи"stock": 0. - Склад не в профиле. После добавления Express нажмите «Применить», появятся поля
stock_…. - Архив / автоархив. Ноль иногда проходит, плюс — нет (
PRODUCT_IS_ARCHIVED). В профиле: галка возврата из автоархива и вкладка «Диагностика». - Пустой список задач при режиме «только остатки» — это норма. Задача Ozon создаётся при выгрузке карточки, не остатка.
5. Карточки, остатки и цены — разные профили
Остатки и цены лучше вести отдельным профилем. Старый cron на профиле карточек с ценами может съесть лимит daily_update и оборвать шаг до остатков. Поле offer_id во всех профилях одного кабинета должно совпадать. Остаток на склад — когда статус товара processed.
6. Чек-лист, прежде чем писать в ТП
- Превью: оба склада, те
warehouse_id, что в кабинете. - Один прогон профиля остатков с отладкой.
- В логе есть
Stocks (V2)по каждому складу. - По Express:
updated: trueили точный код. - Вкладка «Диагностика» → «Остатки FBS по складам» по этому
offer_id. - Версии модуля экспорта и
acrit.core.
В тикет: ID профиля остатков, offer_id, фрагмент лога с Stocks (V2) и Result for /v2/products/stocks — не только скрин кабинета.
Связанные материалы
Возврат к списку
