Связка Wildberries и МойСклад нужна там, где склад и учёт ведутся в МойСклад, а витрина работает на 1С-Битрикс. Задача интегратора — сделать МойСклад источником остатков для сайта и маркетплейса, не задвоив товары и заказы. Разберём архитектуру и роль каждой системы.
Роли систем и источник истины
МойСклад — это система складского и товарного учёта: приход, себестоимость, остатки по складам, отгрузки. Wildberries — канал продаж, 1С-Битрикс — витрина. В такой тройке важно заранее закрепить, кто хозяин каждой сущности:
- МойСклад — остатки, приход, себестоимость, отгрузочные документы;
- 1С-Битрикс — витрина, карточки, контент, цены сайта;
- Wildberries — канал продаж и источник заказов.
Каталог может рождаться и в Битрикс, и в МойСклад — это решается на старте. Но остатки почти всегда ведёт МойСклад: он ближе всего к физическому товару. Значит, задача обмена — раздать остаток из МойСклад на сайт и в WB, а заказы собрать обратно в учёт.
Чем обмениваться: JSON API МойСклад
МойСклад предоставляет JSON API 1.2 (api.moysklad.ru/api/remap/1.2) — через него Битрикс получает и отдаёт данные. Авторизация — по токену или Basic Auth. Основные сущности, с которыми работает обмен:
| Сущность МойСклад | Endpoint | Роль в связке |
|---|---|---|
| Товары и модификации | /entity/product, /entity/variant | Каталог, артикулы, баркоды |
| Остатки | /report/stock/all | Единый остаток по складам |
| Заказы покупателя | /entity/customerorder | Заказы WB и сайта в учёте |
Ключ сопоставления товаров между системами — артикул и баркод. В МойСклад это поля article и barcodes, в Битрикс — свойства торговых предложений, в WB — vendorCode и баркод карточки.
Единые остатки: маршрут от МойСклад к WB и сайту
Главная ценность связки — единый остаток, который нельзя перепродать. Маршрут остатка обычно такой:
- МойСклад считает актуальный остаток (отчёт
/report/stock/all); - обмен забирает изменения и обновляет остаток в Битрикс (для витрины сайта);
- тот же остаток уходит на склад продавца WB (FBS) через
PUT /api/v3/stocks/{warehouseId}.
Чтобы не гонять весь каталог, остатки тянут инкрементально — по изменениям или по расписанию каждые несколько минут. Если склад в МойСклад один, а каналов несколько, полезно резервировать часть остатка под WB или отдавать общий остаток и полагаться на скорость синхронизации.
Заказы Wildberries в МойСклад
Заказы WB нужно провести в учёте, чтобы списался остаток и корректно посчиталась выручка. По схеме FBS цикл выглядит так:
- новое сборочное задание приходит в Marketplace API WB (
/api/v3/orders/new); - обмен создаёт в МойСклад заказ покупателя (
customerorder) с позициями по баркодам; - после сборки и отгрузки формируется отгрузка (
/entity/demand), остаток списывается; - статус сборки/отгрузки передаётся обратно на WB.
Для идемпотентности внешний идентификатор заказа WB сохраняют в поле заказа МойСклад (например, в externalCode или доп. поле). Тогда повторная синхронизация не создаёт дубль. FBO-заказы (отгрузка со склада WB) заводят в учёт для аналитики и списания, но собирать их не нужно.
Где в этой схеме 1С-Битрикс
Возможны две конфигурации, и от выбора зависит, где живёт логика обмена:
| Конфигурация | Обмен с WB | Когда выбирать |
|---|---|---|
| МойСклад ↔ WB напрямую, Битрикс — витрина | Ведёт МойСклад | Учёт первичен, сайт — только витрина |
| МойСклад → Битрикс → WB | Ведёт модуль в Битрикс | Битрикс — центр обмена и логики |
Во втором случае Битрикс становится хабом: тянет каталог и остатки из МойСклад по JSON API, отдаёт их на витрину и в WB, а заказы WB кладёт в МойСклад. Такую логику оформляют отдельным модулем с агентами по расписанию и очередью запросов, чтобы соблюдать лимиты обоих API.
- обмен с JSON API МойСклад — на
Bitrix\Main\Web\HttpClient; - агенты запускать через
cron, а не на хитах; - токены и маппинг — в настройках модуля, с логом обмена.
Подводные камни и как их обойти
Связка из трёх систем чувствительна к рассинхрону и лимитам. Типичные проблемы:
| Проблема | Причина | Решение |
|---|---|---|
| Пересорт остатков | Два канала выгрузки в WB | Один источник остатков |
| Дубли заказов | Нет проверки внешнего ID | Идемпотентность по externalCode |
| Ошибки лимитов API | Частые полные выгрузки | Инкремент + очередь |
| Товар не связался | Разные артикулы/баркоды | Единый ключ сопоставления |
Отдельно стоит следить за модификациями (variant) в МойСклад: они должны соответствовать размерам/цветам SKU в Битрикс и номенклатурам WB. Расхождение размерных сеток — частая причина, по которой остаток «не находит» свой товар.
Итог
Связка Wildberries + МойСклад + 1С-Битрикс держится на трёх принципах: единый источник остатков (МойСклад), сквозной ключ сопоставления (артикул и баркод) и идемпотентность заказов по внешнему ID. Обмен с МойСклад идёт через JSON API 1.2, с WB — через Content и Marketplace API, а Битрикс работает витриной или центральным хабом — в зависимости от выбранной конфигурации.
Мы в B2Bsite проектируем такие интеграции с учётом лимитов API, инкрементального обмена и контроля пересорта. Настраиваем маршрут остатков от МойСклад к сайту и WB, заводим заказы маркетплейса в учёт и делаем обмен предсказуемым — с логом, очередью и мониторингом ошибок.
Частые вопросы
Какая система должна вести остатки в этой связке?
Обычно МойСклад, так как он ближе всего к физическому товару и ведёт приход и отгрузки. Остаток из МойСклад раздаётся на витрину Битрикс и на склад продавца WB по одному каналу выгрузки.
Через что Битрикс обменивается с МойСклад?
Через JSON API 1.2 МойСклад по адресу api.moysklad.ru/api/remap/1.2 с авторизацией по токену. Так Битрикс получает товары, остатки и заводит заказы в учёт.
Можно ли обойтись штатной интеграцией МойСклад с WB?
Да, если сайт на Битрикс выполняет роль только витрины. Но нельзя допускать, чтобы остатки в WB одновременно слали и МойСклад, и Битрикс — это ведёт к пересорту.
Как заказы Wildberries попадают в учёт?
Обмен создаёт в МойСклад заказ покупателя по позициям заказа WB, а после отгрузки формирует документ отгрузки, чтобы списался остаток и посчиталась выручка.
Как не задвоить заказы WB в МойСклад?
Внешний идентификатор заказа Wildberries сохраняется в поле заказа МойСклад (например, externalCode). При повторной синхронизации заказ с тем же ID не создаётся заново.
По какому полю связываются товары трёх систем?
По артикулу и баркоду. В МойСклад это article и barcodes, в Битрикс — свойства торговых предложений, в WB — vendorCode и баркод карточки. Значения должны совпадать.
Нужно ли собирать заказы FBO?
Нет, FBO-заказы отгружает сам Wildberries со своего склада. В МойСклад их заводят только для аналитики и списания остатка, полный цикл сборки идёт по FBS.
Как соблюсти лимиты API при обмене?
Использовать инкрементальный обмен по изменениям, очередь запросов на агентах Битрикс и запуск агентов через cron. Полные выгрузки всего каталога быстро упираются в лимиты.
Поможем с настройкой и поддержкой Интеграции и связки систем
Поможем с настройкой, доработкой и поддержкой Интеграции и связки систем.