Как автоматизировать загрузку отчета комиссионера из Wildberries в 1С через API?

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

Работа с маркетплейсами через загрузку Excel-файлов часто превращается в рутину из-за постоянных изменений структуры колонок со стороны торговой площадки. Каждое изменение формата в личном кабинете Wildberries (WB) вынуждает программиста переписывать алгоритмы разбора файла в 1С. В данной статье мы разберем, как уйти от "старомодного" способа загрузки файлов и настроить современную интеграцию через API.

Почему стоит отказаться от Excel в пользу API

Рассмотрим основные причины, по которым работа с API является более надежной. Во-первых, структура JSON-ответа в API гораздо стабильнее, чем визуальные таблицы Excel. Во-вторых, Wildberries постепенно ограничивает данные в файлах (например, в некоторых отчетах могут отсутствовать данные по товарам), стимулируя поставщиков использовать программные интерфейсы. Проанализируем ситуацию: использование HTTPСоединение позволяет автоматизировать процесс получения данных по расписанию, без участия пользователя и ручного скачивания файлов.

Разбираемся в архитектуре API Wildberries

Прежде чем приступать к написанию кода, выясним важный нюанс: у Wildberries существует два раздельных API, которые требуют разных ключей доступа (токенов). Посмотрим на их различия:

  1. API контента и заказов: используется для работы с карточками товаров, остатками и текущими заказами (сборочными заданиями).
  2. API статистики: именно этот интерфейс необходим для получения детализации отчета о продажах. Для загрузки отчета комиссионера нам потребуется токен с правами на категорию «Статистика».

Важный момент: С недавнего времени Wildberries перешел на использование JWT-токенов (V2). При создании ключа в личном кабинете убедитесь, что вы выбрали соответствующий тип доступа. Также обратите внимание на адрес сервера. Хотя в старых обсуждениях упоминается suppliers-stats.wildberries.ru, актуальным доменом для получения статистики является statistics-api.wildberries.ru.

Программная реализация запроса к API статистики

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

Проанализируем пример кода, который выполняет подключение и получает данные в формате JSON:


// Подготовка параметров периода
ДатаНачала = Формат(ДатаНачалаОтчета, "ДФ=yyyy-MM-ddT00:00:00.000Z");
ДатаКонца = Формат(ДатаКонцаОтчета, "ДФ=yyyy-MM-ddT23:59:59.000Z");

// Настройка соединения
Сервер = "statistics-api.wildberries.ru";
Токен = "ВАШ_JWT_ТОКЕН_СТАТИСТИКИ";

Соединение = Новый HTTPСоединение(Сервер, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());

// Формирование адреса ресурса (метод получения детального отчета)
// Используем параметр rrdid для пагинации (начальное значение 0)
rrdid = 0; 
АдресРесурса = "/api/v1/supplier/reportDetailByPeriod?dateFrom=" + ДатаНачала + "&dateTo=" + ДатаКонца + "&rrdid=" + rrdid;

HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
HTTPЗапрос.Заголовки.Вставить("Authorization", Токен);
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");

Попытка
    Ответ = Соединение.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 Тогда
        ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
        
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
        ДанныеОтчета = ПрочитатьJSON(ЧтениеJSON);
        ЧтениеJSON.Закрыть();
        
        // Далее следует обработка массива ДанныеОтчета
    Иначе
        Сообщить("Ошибка запроса: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТелоКакСтроку());
    КонецЕсли;
Исключение
    Сообщить("Ошибка сетевого соединения");
КонецПопытки;

Обработка больших объемов данных (пагинация)

Выясним важную техническую особенность: Wildberries не отдает более 100 000 строк за один запрос. Если ваш отчет за неделю содержит больше записей, необходимо использовать механизм пагинации через параметр rrdid. Рассмотрим, как это работает: в каждой строке полученного ответа есть уникальный идентификатор строки rrdid. Для получения следующей порции данных вы должны найти максимальный rrdid в полученном массиве и передать его в следующий запрос.

Этот процесс нужно повторять в цикле до тех пор, пока API не вернет пустой массив. Таким образом мы гарантируем, что загрузили абсолютно все строки отчета комиссионера.

Анализ данных отчета для отражения в учете

При разборе полученного JSON-объекта важно правильно сопоставить поля API с реквизитами документа ОтчетКомиссионера в 1С. Рассмотрим ключевые поля:

Использование типовых решений в 1С

Проанализируем ситуацию для тех, кто не хочет "изобретать велосипед". В современных версиях конфигураций 1С:Бухгалтерия предприятия 3.0, 1С:УНФ и 1С:Комплексная автоматизация уже появился встроенный функционал для работы с маркетплейсами. В разделе «Продажи» или «Маркетплейсы» можно настроить интеграцию, указав токен. 1С сама выполнит запросы к API, сопоставит номенклатуру по артикулам и создаст необходимые документы.

Однако, если ваша конфигурация сильно доработана или вы используете старые версии (например, УПП или УТ 10.3), вышеприведенный пример кода на основе HTTPСоединение станет фундаментом для вашей собственной подсистемы интеграции.

Рекомендации по стабильной работе

В заключение рассмотрим несколько советов, которые помогут избежать ошибок при эксплуатации обмена:

  1. Логирование: Всегда сохраняйте текст ответа от API при возникновении ошибок (коды 401, 429, 500). Это поможет быстро понять, истек ли срок действия токена или на сервере WB ведутся технические работы.
  2. Частота запросов: У Wildberries действуют лимиты на количество запросов в минуту (Rate Limits). Не делайте запросы в бесконечном цикле без пауз, если данных очень много.
  3. Проверка дублей: При загрузке данных ориентируйтесь на поле realizationreport_id (номер отчета) и rrid (идентификатор строки). Это позволит избежать повторного отражения одних и тех же операций в учете.

Таким образом, переход на API не только избавляет от проблем с изменением формата Excel-файлов, но и открывает возможности для полной автоматизации учета продаж на маркетплейсах.

← На главную