Работа с маркетплейсами через загрузку Excel-файлов часто превращается в рутину из-за постоянных изменений структуры колонок со стороны торговой площадки. Каждое изменение формата в личном кабинете Wildberries (WB) вынуждает программиста переписывать алгоритмы разбора файла в 1С. В данной статье мы разберем, как уйти от "старомодного" способа загрузки файлов и настроить современную интеграцию через API.
Рассмотрим основные причины, по которым работа с API является более надежной. Во-первых, структура JSON-ответа в API гораздо стабильнее, чем визуальные таблицы Excel. Во-вторых, Wildberries постепенно ограничивает данные в файлах (например, в некоторых отчетах могут отсутствовать данные по товарам), стимулируя поставщиков использовать программные интерфейсы. Проанализируем ситуацию: использование HTTPСоединение позволяет автоматизировать процесс получения данных по расписанию, без участия пользователя и ручного скачивания файлов.
Прежде чем приступать к написанию кода, выясним важный нюанс: у Wildberries существует два раздельных API, которые требуют разных ключей доступа (токенов). Посмотрим на их различия:
Важный момент: С недавнего времени Wildberries перешел на использование JWT-токенов (V2). При создании ключа в личном кабинете убедитесь, что вы выбрали соответствующий тип доступа. Также обратите внимание на адрес сервера. Хотя в старых обсуждениях упоминается suppliers-stats.wildberries.ru, актуальным доменом для получения статистики является statistics-api.wildberries.ru.
Разберем по шагам, как реализовать запрос для получения детализированного отчета. Для этого мы будем использовать метод 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С. Рассмотрим ключевые поля:
retail_amount — цена, по которой товар был продан покупателю. Именно эта сумма является вашим доходом для целей налогообложения (УСН/ОСНО).supplier_reward — сумма, которую Wildberries должен перечислить вам после вычета своей комиссии.commission_percent — процент вознаграждения маркетплейса.delivery_amount — стоимость логистики, которую нужно отразить как услуги сторонней организации (или в соответствующей вкладке отчета).doc_type_name — тип операции (Продажа или Возврат). Обязательно проверяйте это поле, чтобы корректно отразить сторнирующие записи.Проанализируем ситуацию для тех, кто не хочет "изобретать велосипед". В современных версиях конфигураций 1С:Бухгалтерия предприятия 3.0, 1С:УНФ и 1С:Комплексная автоматизация уже появился встроенный функционал для работы с маркетплейсами. В разделе «Продажи» или «Маркетплейсы» можно настроить интеграцию, указав токен. 1С сама выполнит запросы к API, сопоставит номенклатуру по артикулам и создаст необходимые документы.
Однако, если ваша конфигурация сильно доработана или вы используете старые версии (например, УПП или УТ 10.3), вышеприведенный пример кода на основе HTTPСоединение станет фундаментом для вашей собственной подсистемы интеграции.
В заключение рассмотрим несколько советов, которые помогут избежать ошибок при эксплуатации обмена:
realizationreport_id (номер отчета) и rrid (идентификатор строки). Это позволит избежать повторного отражения одних и тех же операций в учете.Таким образом, переход на API не только избавляет от проблем с изменением формата Excel-файлов, но и открывает возможности для полной автоматизации учета продаж на маркетплейсах.