Работа с маркетплейсом Wildberries через API — одна из самых востребованных задач для современного программиста 1С, требующая продвинутого уровня интеграции. Однако на первых этапах многие сталкиваются с техническими сложностями: сервер возвращает непонятные ошибки 404 Not Found или 405 Method Not Allowed. В этой статье мы подробно разберем, как правильно настроить интеграцию, сформировать запрос и получить список номенклатуры (карточек товаров) с использованием актуальных методов API v2.
Рассмотрим ситуацию: вы пытаетесь отправить простой запрос к серверу Wildberries, но получаете ошибки. Проанализируем основные причины неудач:
content/v2/get/cards/list. Также обратите внимание на наличие или отсутствие ведущего слеша в параметре АдресРесурса.GET. Однако в API Wildberries для метода получения списка карточек требуется метод POST, так как параметры фильтрации передаются в теле запроса в формате JSON. Разобраться в основах поможет интерактивный курс по HTTP-запросам.Для того чтобы сервер WB понял, какие именно данные нам нужны, мы должны передать настройки фильтрации и пагинации. Рассмотрим, как правильно сформировать структуру данных в 1С, чтобы она корректно сериализовалась в JSON. Для этого будем использовать объекты Структура и функцию ЗаписатьJSON.
// Формируем вложенные структуры для параметров запроса
Курсор = Новый Структура;
Курсор.Вставить("limit", 100); // Ограничение на количество записей (макс 100)
Фильтр = Новый Структура;
Фильтр.Вставить("withPhoto", -1); // -1 - все товары, 0 - без фото, 1 - с фото
Настройки = Новый Структура;
Настройки.Вставить("cursor", Курсор);
Настройки.Вставить("filter", Фильтр);
ИтоговаяСтруктура = Новый Структура;
ИтоговаяСтруктура.Вставить("settings", Настройки);
// Сериализация в строку JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ИтоговаяСтруктура);
СтрокаJSON = ЗаписьJSON.Закрыть();
Важный момент: Обратите внимание, что API чувствителен к типам данных. Параметр limit должен быть числом, а не строкой. Использование типизированных структур в 1С позволяет избежать ошибок при автоматической сборке JSON.
Теперь разберем, как отправить подготовленные данные на сервер. Мы будем использовать объект HTTPСоединение с обязательным указанием защищенного соединения (SSL) и HTTPЗапрос, в который поместим наш токен авторизации и тело JSON.
// Настройки подключения
Сервер = "suppliers-api.wildberries.ru";
Таймаут = 30;
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
HTTPСоединение = Новый HTTPСоединение(Сервер, , , , , Таймаут, ЗащищенноеСоединение);
// Формирование запроса
АдресРесурса = "content/v2/get/cards/list";
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
// Установка заголовков
HTTPЗапрос.Заголовки.Вставить("Authorization", "ВАШ_ТОКЕН_API");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
// Помещаем JSON в тело запроса
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
// Отправка POST-запроса
Попытка
ОтветСервера = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
КодСостояния = ОтветСервера.КодСостояния;
ТелоОтвета = ОтветСервера.ПолучитьТелоКакСтроку();
Если КодСостояния = 200 Тогда
// Обработка успешного ответа
Сообщить("Данные получены успешно!");
Иначе
Сообщить("Ошибка запроса! Код: " + КодСостояния + ". Ответ: " + ТелоОтвета);
КонецЕсли;
Исключение
Сообщить("Ошибка связи с сервером: " + ОписаниеОшибки());
КонецПопытки;
Выясним причину, по которой новички часто получают только первые 100 товаров и не могут двигаться дальше. Wildberries использует механизм курсорной пагинации. Это означает, что для получения следующей страницы товаров вам недостаточно просто изменить "номер страницы".
Проанализируем структуру ответа от сервера. В JSON-ответе, помимо массива товаров, возвращается объект cursor. В нем содержатся поля updatedAt и nmID. Чтобы получить следующую порцию данных, вы должны взять эти значения из последнего полученного ответа и вставить их в блок cursor следующего запроса.
Рассмотрим алгоритм действий для полной выгрузки номенклатуры:
"limit": 100 без дополнительных параметров в курсоре.cursor ответа и подставляем их в новый запрос.limit.Проанализируем работу с токенами. Wildberries использует JWT-токены. При работе из 1С крайне важно передавать токен в заголовке Authorization без лишних префиксов (если иное не указано в документации конкретной версии API). Если вы используете старые версии API (v1), там мог использоваться заголовок X-Auth-Token. Для актуальной версии контента (v2) стандартом является именно Authorization.
Совет: Всегда проверяйте срок действия токена. Если сервер внезапно начал возвращать ошибку 401 Unauthorized, первым делом обновите токен в личном кабинете поставщика Wildberries.
Разберем ситуацию с ограничением количества запросов. Серверы маркетплейса имеют жесткие лимиты на частоту обращений. Если вы запустите цикл получения карточек слишком быстро, вы получите ошибку 429 Too Many Requests.
Для решения этой проблемы в 1С рекомендуется использовать команду Приостановить(1) внутри цикла обхода страниц, чтобы делать небольшие паузы (например, в 1 секунду) между вызовами. Это гарантирует стабильную работу обработки и отсутствие блокировок со стороны сервера.
Мы рассмотрели базовый процесс интеграции 1С с API Wildberries для получения списка товаров. Главные правила успеха: использование метода POST, корректная установка заголовка Content-Type: application/json, внимательное отношение к курсорной пагинации и обязательная обработка кодов состояния ответа сервера. Применяя эти подходы, вы сможете построить надежную систему обмена данными между вашей учетной системой и маркетплейсом.