Как получить список карточек товаров Wildberries через API в 1С?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

Работа с маркетплейсом Wildberries через API — одна из самых востребованных задач для современного программиста 1С, требующая продвинутого уровня интеграции. Однако на первых этапах многие сталкиваются с техническими сложностями: сервер возвращает непонятные ошибки 404 Not Found или 405 Method Not Allowed. В этой статье мы подробно разберем, как правильно настроить интеграцию, сформировать запрос и получить список номенклатуры (карточек товаров) с использованием актуальных методов API v2.

Разбор типичных ошибок при подключении

Рассмотрим ситуацию: вы пытаетесь отправить простой запрос к серверу Wildberries, но получаете ошибки. Проанализируем основные причины неудач:

  1. Ошибка 404 (Not Found): Чаще всего возникает из-за неверного адреса ресурса. Проверьте актуальность эндпоинта в официальной документации. Для получения списка карточек используется путь content/v2/get/cards/list. Также обратите внимание на наличие или отсутствие ведущего слеша в параметре АдресРесурса.
  2. Ошибка 405 (Method Not Allowed): Означает, что вы используете не тот HTTP-метод. Многие ошибочно полагают, что получение данных всегда происходит через GET. Однако в API Wildberries для метода получения списка карточек требуется метод POST, так как параметры фильтрации передаются в теле запроса в формате JSON. Разобраться в основах поможет интерактивный курс по HTTP-запросам.

Шаг 1. Формирование структуры JSON-запроса

Для того чтобы сервер 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.

Шаг 2. Настройка HTTP-запроса и соединения

Теперь разберем, как отправить подготовленные данные на сервер. Мы будем использовать объект 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 Тогда
        // Обработка успешного ответа
        Сообщить("Данные получены успешно!");
    Иначе
        Сообщить("Ошибка запроса! Код: " + КодСостояния + ". Ответ: " + ТелоОтвета);
    КонецЕсли;
Исключение
    Сообщить("Ошибка связи с сервером: " + ОписаниеОшибки());
КонецПопытки;

Шаг 3. Обработка пагинации (Курсор)

Выясним причину, по которой новички часто получают только первые 100 товаров и не могут двигаться дальше. Wildberries использует механизм курсорной пагинации. Это означает, что для получения следующей страницы товаров вам недостаточно просто изменить "номер страницы".

Проанализируем структуру ответа от сервера. В JSON-ответе, помимо массива товаров, возвращается объект cursor. В нем содержатся поля updatedAt и nmID. Чтобы получить следующую порцию данных, вы должны взять эти значения из последнего полученного ответа и вставить их в блок cursor следующего запроса.

Рассмотрим алгоритм действий для полной выгрузки номенклатуры:

  1. Отправляем первый запрос с "limit": 100 без дополнительных параметров в курсоре.
  2. Получаем ответ, разбираем JSON.
  3. Если количество вернувшихся товаров равно вашему лимиту, значит, есть еще данные.
  4. Берем данные из секции cursor ответа и подставляем их в новый запрос.
  5. Повторяем цикл до тех пор, пока количество возвращенных карточек не станет меньше limit.

Нюансы работы с авторизацией

Проанализируем работу с токенами. Wildberries использует JWT-токены. При работе из 1С крайне важно передавать токен в заголовке Authorization без лишних префиксов (если иное не указано в документации конкретной версии API). Если вы используете старые версии API (v1), там мог использоваться заголовок X-Auth-Token. Для актуальной версии контента (v2) стандартом является именно Authorization.

Совет: Всегда проверяйте срок действия токена. Если сервер внезапно начал возвращать ошибку 401 Unauthorized, первым делом обновите токен в личном кабинете поставщика Wildberries.

Работа с лимитами (Rate Limits)

Разберем ситуацию с ограничением количества запросов. Серверы маркетплейса имеют жесткие лимиты на частоту обращений. Если вы запустите цикл получения карточек слишком быстро, вы получите ошибку 429 Too Many Requests.

Для решения этой проблемы в 1С рекомендуется использовать команду Приостановить(1) внутри цикла обхода страниц, чтобы делать небольшие паузы (например, в 1 секунду) между вызовами. Это гарантирует стабильную работу обработки и отсутствие блокировок со стороны сервера.

Заключение

Мы рассмотрели базовый процесс интеграции 1С с API Wildberries для получения списка товаров. Главные правила успеха: использование метода POST, корректная установка заголовка Content-Type: application/json, внимательное отношение к курсорной пагинации и обязательная обработка кодов состояния ответа сервера. Применяя эти подходы, вы сможете построить надежную систему обмена данными между вашей учетной системой и маркетплейсом.

← На главную