FBS прощает меньше, чем складская модель: если вы не отменили заказ вовремя или не обновили остатки — платите штраф, а при повторении получаете понижение в выдаче. Разбираем связку, которая держит остатки 50 000 SKU консистентными между Битриксом, Ozon и Wildberries.
Почему «в лоб» не работает
У Ozon и WB жёсткие лимиты: 1–2 обновления остатков в минуту на ключ, а Wildberries ещё и отдаёт остатки с задержкой до 15 минут. Синхронный обмен «из битриксового агента в цикле» гарантированно упирается в rate limit, часть обновлений теряется, и наступает овербукинг: маркетплейс продал товар, которого физически нет. Дальше — отмена, штраф, недовольный клиент.
Архитектура шлюза
Между Битриксом и маркетплейсами встаёт шлюз на Go с очередями RabbitMQ. Битрикс по вебхуку отправляет событие «изменился остаток» (offer_id, warehouse, qty) — шлюз кладёт его в очередь с дедупликацией по ключу. Воркеры читают очередь с учётом лимитов каждого API, retries с экспоненциальной задержкой складывают в отложенную очередь при 429/5xx.
Правила резервирования
Обмен в обратную сторону и 1С
Заказы маркетплейсов забираются шлюзом по расписанию, мапятся в заказы Битрикса и дальше идут в 1С штатным обменом. Движения товара после отгрузки возвращаются тем же путём и обновляют мастер-остаток. Круг замкнут, 1С остаётся единственным источником правды по фактическим движениям.
Итог за квартал эксплуатации: отмены по причине «нет в наличии» снизились с 2.3% до 0.15% заказов, штрафы за позднюю отмену — до нуля, а срез синхронизации остатков показывает расхождение не больше одной единицы на 3 000 SKU.