Интеграция складской системы управления (WMS) с маркетплейсами — это критически важная задача для современных распределительных центров и фулфилмент-операторов. В отличие от обычной торговой системы, WMS требует особого подхода к обработке заказов, маркировке и управлению остатками. Рассмотрим подробно, как выстроить архитектуру обмена и реализовать техническую часть интеграции.
Перед началом кодинга проанализируем ситуацию и выберем одну из двух основных стратегий интеграции. Ошибка на этом этапе может привести к рассинхронизации остатков и штрафам от маркетплейсов.
Разберем подробнее, почему для фулфилмента предпочтительнее прямой обмен. В условиях, когда склад обрабатывает тысячи мелких заказов, лишнее звено в виде учетной системы может стать «бутылочным горлышком». Однако при такой схеме WMS должна сама уметь консолидировать данные и передавать их в КИС для бухгалтерского учета постфактум.
Проанализируем технические нюансы работы с API. Современные маркетплейсы используют REST API с авторизацией через токены (JWT). Для 1С это означает работу с объектами HTTPЗапрос и HTTPСоединение.
Рассмотрим пример функции для получения новых сборочных заданий (заказов) с Wildberries:
Функция ПолучитьНовыеЗаказыWB(ТокенАвторизации) Экспорт
Соединение = Новый HTTPСоединение("suppliers-api.wildberries.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Заголовок = Новый Соответствие;
Заголовок.Вставить("Authorization", ТокенАвторизации);
Заголовок.Вставить("Content-Type", "application/json");
Запрос = Новый HTTPЗапрос("/api/v3/orders/new", Заголовок);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Возврат Ответ.ПолучитьТелоКакСтроку();
Иначе
ЗаписатьЛогОшибки("Ошибка API WB: " + Ответ.КодСостояния);
Возврат Неопределено;
КонецЕсли;
КонецФункции
Важный момент: Wildberries и Ozon имеют лимиты на количество запросов (Rate Limits). Если ваша WMS будет опрашивать API каждую секунду, вы получите временную блокировку IP-адреса. Рекомендуем реализовать очередь запросов или использовать регламентные задания с интервалом в 2-5 минут.
Выясним причину, почему обычные обработки обмена для «1С:Управление торговлей» не подходят для 1С:WMS без доработки. В WMS нам недостаточно просто создать документ. Нам нужно:
WMS должна отправить её на термопринтер в зоне упаковки в нужный момент.Посмотрим на ситуацию со стороны складских остатков. Для маркетплейса критично знать «Доступный остаток». В 1С:WMS остаток в ячейках (адресный контур) может отличаться от учетного остатка. Рассмотрим формулу правильного расчета остатка для выгрузки:
Доступно для продажи = Свободный остаток в кондиционных ячейках - Резерв по принятым заказам - Товар в зоне брака.
Проанализируем использование виртуальных ячеек. Если при отборе обнаружена недостача, товар перемещается в виртуальную ячейку «Расхождения». Система должна мгновенно вычесть этот товар из доступного для маркетплейса, чтобы не получить заказ, который невозможно собрать.
Рассмотрим подробнее процесс получения этикетки. Wildberries через метод /api/v3/orders/stickers возвращает данные стикера. Если вы получаете строку в Base64, её нужно преобразовать в двоичные данные:
ДвоичныеДанныеЭтикетки = Base64Значение(СтрокаBase64ИзAPI);
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ДвоичныеДанныеЭтикетки.Записать(ИмяФайла);
// Далее используем средства компоненты печати или внешние утилиты для отправки на принтер
Это самый сложный блок. При поступлении возврата от Wildberries, складской оператор сканирует этикетку маркетплейса. WMS должна найти исходный заказ, определить товар и создать документ «Приход излишка» или «Возврат от клиента» в статусе «Зона карантина». После проверки качества (отсутствие повреждений, вскрытой упаковки) товар перемещается в зону отбора для повторной продажи.
Резюмируем: Интеграция 1С:WMS с маркетплейсами — это не только работа с JSON и HTTP-запросами, но и глубокая настройка складской логики. Для небольших складов используйте схему через КИС, для крупных фулфилмент-центров — пишите прямой обмен с API, учитывая специфику адресного хранения и жесткие требования площадок к скорости обработки заданий.