Публикация

Остатки Ozon → Яндекс Маркет: почему отсутствие товара в выгрузке не означает ноль

Полная выгрузка, архив, соответствия SKU и задержка чтения API: как передавать остатки с проверяемыми правилами. Практический разбор каталога из 276 товаров.

Маркетплейсы и интеграции 4 мин
От полного источника до подтверждённого значения

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

В октябрьской работе KMVSG разделил соответствие товара, свежесть источника, план записи и подтверждение применения. Рассмотрим, какие проверки нужны до включения расписания.

Маркетплейсы и интеграции

Остатки между маркетплейсами

  1. 01Источник
  2. 02Связи SKU
  3. 03Передача
  4. 04Сверка
  • Артикул и подтверждённый внутренний ключ связывают товары. Похожие названия требуют отдельной проверки.
  • Полный успешный снимок источников проверяем до передачи. Сбой выгрузки не превращаем в нулевой остаток.
  • Различаем принятие записи API и подтверждение значения. Для задержки чтения сохраняем отдельный статус.

Определите источник и правило выбора

Начните с точного перечня кабинетов и складов. В нашем проекте использован только Ozon; Wildberries исключён. Между свежими Ozon-кабинетами применялся согласованный минимум доступного остатка по артикулу. Это правило конкретного внедрения, а не универсальная формула для любого склада.

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

Проверьте связи карточек до расчёта

Прямого артикула бывает недостаточно: в исторической карточке мог сохраниться подтверждённый внутренний ключ. Используйте такие связи с проверенным происхождением; совпадение названий оставьте кандидатом для ручного разбора.

Прежний план охватывал 96 товаров. Ещё 111 пропускались из-за защитного лимита, 69 не имели прямого артикула. Проверенные внутренние связи вернули 17 из этих 69; оставшиеся 52 потребовали отдельного решения. Изменение лимита согласовано после проверки больших значений в API источника.

Отсутствие в текущем каталоге разбирается отдельно

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

Поздний разбор 52 SKU обнаружил 23 архивные пары по артикулу и штрихкоду. Для 25 подтверждённой пары не найдено; это не доказывает, что товара никогда не было. Ещё три позиции оказались наборами без подтверждённого состава, одна — вероятным дублем. Соответствия в этом разборе не менялись.

Архивная карточка не подтверждает физический остаток

Архив может объяснить происхождение товара и помочь найти документы. Его количественные поля сами по себе не доказывают свежее наличие для продажи. В нашем разборе встречались большие архивные FBS-числа, но автоматически разархивировать товары или передавать эти значения не стали.

Владелец отдельно разрешил ноль для отсутствующих в текущем источнике SKU. После проверки полноты и свежести 52 значения явно переданы и приняты API. Поштучный список сохранён для дальнейшей работы.

Разделяйте план, принятие и применение

Официальная инструкция Яндекс Маркета описывает передачу остатков через API. Для операционной приёмки полезно хранить ещё и свой журнал: что рассчитано, что отправлено, что принято и что подтвердилось контрольным чтением.

В итоговом плане было 276 товаров: 176 положительных и 100 нулевых значений. Один последующий проход вернул 126 записей, 150 уже совпавших значений и 151 подтверждение чтением; итог — verification_pending. Это разные показатели процесса. Они не означают, что все 276 значений уже проверены на стороне Маркета.

Принимайте интеграцию по наблюдаемому результату

Проверьте отсутствие пропусков, порядок обновления источников, расписание, журнал ошибок и поведение при устаревших данных. Задержка ответа чтения должна сохранять неопределённый результат, а не запускать повторную запись вслепую.

Подтверждённый итог этого кейса — полный охват планом, включённое расписание и принятые запросы с отдельным статусом проверки. Полное применение всех остатков и снижение отмен заказов на момент OPS-среза не подтверждены. Для вашего проекта критерии итоговой сверки согласуем до записи.

Короткий чек-лист

  • Определить кабинеты, склады и источник
  • Проверить артикулы и внутренние связи
  • Прочитать полный свежий каталог и остатки
  • Разобрать архив, наборы и дубли
  • Согласовать правило нулевого остатка
  • Разделить принятие запроса и подтверждение значения

Ссылки и исходный код