+7 499 938 8452 пн.-пт. 10:00 – 17:00

Если в кабинете Ozon остаток не такой, как на сайте, сначала разведите сборку на сайте и ответ площадки. Модуль не подставляет одно число сразу во все склады. Каждый склад из профиля уходит отдельным запросом /v2/products/stocks.

1. «Проверить выгрузку» — это не отправка на Ozon

Кнопка считает поля локально. Массив вроде:

[STOCKS] => Array (
    [1020005020237210] => 0
    [1020005020236680] => 0
)

это DATA_MORE на сайте, не запрос в кабинет.

/v2/products/stocks вызывается только на реальном прогоне (cron, агент или «Запустить»). Если шаг оборвался раньше, нули из превью на Express и FBS не попадут.

В режиме «только остатки» в том же окне написано, что данные служебные и в прямом виде не выгружаются. Это не ошибка модуля.

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

2. Куда смотреть: лог профиля, не кабинет и не превью

Нужен профиль остатков (формат Ozon API, режим только остатков и цен), не профиль карточек.

  1. Откройте профиль → вкладка «Лог и история».
  2. Включите «Режим отладки для данного профиля» (не глобальную отладку в настройках модуля).
  3. Нажмите «Применить». Без сохранения галка не действует.
  4. Запустите один прогон.
  5. В логе найдите артикул / offer_id и строки Stocks (V2) и Result for /v2/products/stocks.

Пока галка отладки снята, JSON ответа Ozon в лог не пишется. Останутся только «Запущен автоматический экспорт» / «Процесс завершен».

После разбора галку отладки снимите и снова нажмите «Применить». Иначе лог быстро разрастётся.

3. Что значит ответ Ozon

updated смотрят только в логе после прогона с отладкой. В «Проверить выгрузку» и в кабинете Ozon этой строки нет.

Что в логеЧто это значит
"updated": trueOzon принял значение (в том числе ноль)
"updated": falseплощадка отклонила изменение; ниже будет код
склада нет в Stocks (V2)этот warehouse_id в прогоне не уходил
PRODUCT_IS_ARCHIVEDкарточка в архиве; плюсовой остаток Ozon не примет, пока карточку не вернуть
NOT_FOUNDoffer_id ещё нет в кабинете или товар не processed
лимит цен / ResourceExhaustedв прогон попали цены и упёрлись в лимит; остатки могли не дойти

4. Почему FBS уже 0, а Express ещё 1

  1. Превью ≠ прогон. Ноль на Express появится, только если в логе того прогона есть оба warehouse_id и "stock": 0.
  2. Склад не в профиле. После добавления Express нажмите «Применить», появятся поля stock_….
  3. Архив / автоархив. Ноль иногда проходит, плюс — нет (PRODUCT_IS_ARCHIVED). В профиле: галка возврата из автоархива и вкладка «Диагностика».
  4. Пустой список задач при режиме «только остатки» — это норма. Задача Ozon создаётся при выгрузке карточки, не остатка.

5. Карточки, остатки и цены — разные профили

Остатки и цены лучше вести отдельным профилем. Старый cron на профиле карточек с ценами может съесть лимит daily_update и оборвать шаг до остатков. Поле offer_id во всех профилях одного кабинета должно совпадать. Остаток на склад — когда статус товара processed.

6. Чек-лист, прежде чем писать в ТП

  1. Превью: оба склада, те warehouse_id, что в кабинете.
  2. Один прогон профиля остатков с отладкой.
  3. В логе есть Stocks (V2) по каждому складу.
  4. По Express: updated: true или точный код.
  5. Вкладка «Диагностика» → «Остатки FBS по складам» по этому offer_id.
  6. Версии модуля экспорта и acrit.core.

В тикет: ID профиля остатков, offer_id, фрагмент лога с Stocks (V2) и Result for /v2/products/stocks — не только скрин кабинета.

Связанные материалы


Возврат к списку