Загрузка отчета о продажах по реализации через api Wildberries (изм. от 29.01.24 включительно)

08.05.24

Интеграция - Маркетплейсы

Демонстрация кода для загрузки "Отчета о продажах по реализации WB" с описанием полей ответа.

Добрый день, недавно разбирался и ждал порцию новых транзакций от WB.

Как оказалось, на стороне сервиса была произведена смена версии api, старая v1 остается работать, но только для получения данных до 29 января.

Не буду долго лить воду, начнем по коду.

Интеграцию делаю через стандартные функции 1С без БСП, только код платформы.

1. Первое, что необходимо для получения статистики - получить токен на доступ к этой самой статистике.

Для этого необходимо войти в личный кабинет ВБ Партнеры под Владельцем кабинета, Профиль -

Настройки - Доступ к API, добавить новый ключ и указать ему право на доступ к статистике.

2. Соответственно сам код

Ограничения

Максимальный период запроса данных не более 30 дней

Каждый понедельник с 00.00 до 16.00 данный метод на профилактике =)

Входные данные:

У нас есть переменная КлючАПИ - здесь будет храниться наш ключ к апи

ДатаНачала - дата начала получения данных

ДатаОкончания - дата окончания получения данных

 

Сам код обхода периодов с учетом ограничений выглядеть в моем случае будет так:
 

&НаСервере
Процедура ЗагрузитьНаСервере()
	
	СекундВОдномДне = 86400;
	ОграничениеВДнях = 30;
	врДатаНачала = ДатаНачала;
	ДатаПереходаНаНовуюВерсиюАПИ = Дата("20240129");
	ИспользованиеНовойВерсииАПИ = Истина;
	Пока врДатаНачала <= ДатаОкончания Цикл
		
		ДатаНачалаТранзакций = НачалоДня(врДатаНачала);
		ДатаОкончанияТранзакций = ДатаНачалаТранзакций + ОграничениеВДнях * СекундВОдномДне;
		Если ДатаОкончанияТранзакций > ДатаОкончания Тогда
			
			ДатаОкончанияТранзакций = ДатаОкончания;
		КонецЕсли;
		
		Если ДатаНачалаТранзакций <= ДатаПереходаНаНовуюВерсиюАПИ Тогда
			
			ИспользованиеНовойВерсииАПИ = Ложь;
			Если ДатаОкончанияТранзакций > ДатаПереходаНаНовуюВерсиюАПИ Тогда
				
				ДатаОкончанияТранзакций = ДатаПереходаНаНовуюВерсиюАПИ;
			КонецЕсли;
		КонецЕсли;
		
		ДатаОкончанияТранзакций = КонецДня(ДатаОкончанияТранзакций);
		СписокТранзакций = МаркетПолучитьСтатистикуЗаПериод(ДатаНачалаТранзакций, ДатаОкончанияТранзакций, ИспользованиеНовойВерсииАПИ);
		// обрабатываем или перемещаем в единый массив транзакции
                врДатаНачала = ДатаОкончанияТранзакций + 1;// добавляем 1 секунду для перехода в следующий день
		
	КонецЦикла;
	
КонецПроцедуры

Для загрузки данных через апи "МаркетПолучитьСтатистикуЗаПериод" код привожу ниже.
 

// GET https://statistics-api.wildberries.ru/api/v5/supplier/reportDetailByPeriod
Функция МаркетПолучитьСтатистикуЗаПериод(Знач ПериодНачало, Знач ПериодОкончание, ИспользованиеНовойВерсииАПИ = Истина) Экспорт
	
	ОтветМассивТранзакций = Новый Массив();

	// создаем http соединение с таймаутом в 60 секунд
	Хост = "statistics-api.wildberries.ru";
	Таймаут = 60;
	ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
	СоединениеHttp = Новый HTTPСоединение(Хост, , , , , Таймаут, ЗащищенноеСоединение);	
	
	КодОтветаУспех = 200;
	
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Authorization", КлючАПИ);
	Заголовки.Вставить("Content-Type", "application/json");
	
	rrdid = 0; // Уникальный идентификатор строки отчета из предыдущего запроса для продолжения получения данных
	limit = 100000; // максимально не может быть более 100000
	Если ИспользованиеНовойВерсииАПИ = Истина Тогда
		АдресРесурсаСтатический = "api/v5/supplier/reportDetailByPeriod";
	Иначе
		АдресРесурсаСтатический = "api/v1/supplier/reportDetailByPeriod";
	КонецЕсли;
	Пока Истина Цикл
		
		АдресРесурса = АдресРесурсаСтатический 
		+ "?dateFrom=" + Формат(ПериодНачало, "ДФ=гггг-ММ-ддTЧЧ:мм:сс") 
		+ "&dateTo=" + Формат(ПериодОкончание, "ДФ=гггг-ММ-ддTЧЧ:мм:сс") 
		+ "&rrdid=" + Формат(rrdid, "ЧН=0; ЧГ=") + "&limit=" + Формат(limit, "ЧГ=");
		
		ЗапросHttp = Новый HTTPЗапрос(АдресРесурса, Заголовки);
		Попытка
			
			ОтветHttp = СоединениеHttp.Получить(ЗапросHttp);
		Исключение
			
			ТекстОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
			ВызватьИсключение ТекстОшибки;
		КонецПопытки;
		
		Если Не ОтветHttp.КодСостояния = КодОтветаУспех Тогда
			
			ТекстОшибки = ОтветHttp.ПолучитьТелоКакСтроку();
			ВызватьИсключение ТекстОшибки;
		КонецЕсли;
		
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(ОтветHttp.ПолучитьТелоКакСтроку());
		МассивТранзакций = ПрочитатьJSON(ЧтениеJSON, Ложь);
		ЧтениеJSON.Закрыть();
		
		Если ЗначениеЗаполнено(МассивТранзакций) Тогда
			
			Для Каждого Транзакция Из МассивТранзакций Цикл
				
				ОтветМассивТранзакций.Добавить(Транзакция);
				rrdid = Транзакция.rrd_id;
			КонецЦикла;
		Иначе
			
			Прервать;
		КонецЕсли;
	КонецЦикла;
		
	Возврат ОтветМассивТранзакций;
	
КонецФункции

 

Теперь про сами транзакции, какие поля обрабатываю, какие виды транзакций.

В данный момент мои загрузчики сходятся полностью с детализированной сводкой по отчету внутри личного кабинета WB. (P.S. но так было не всегда, ох уж это разнообразие типов транзакций)

Внутри ответа в каждой строке для идентификации типа транзакции использую поле
"supplier_oper_name"

Единственное, все перевожу в верхний регистр, так как в старой версии были названия с большой буквы, в новой все с маленькой

НаименованиеТранзакции = ВРег(Транзакция.supplier_oper_name);

// список транзакций, которые встречал на данный момент

"ПРОДАЖА" - сама продажа

"ВОЗВРАТ" - начисление за возврат

"ЛОГИСТИКА" - оплата доставки до клиента и обратно при возврате

"ВОЗМЕЩЕНИЕ ИЗДЕРЖЕК ПО ПЕРЕВОЗКЕ" - внутренняя транзакция WB, не влияющая в данный момент на суммы выплат (на всякий случай проверяю в данный момент суммы внутри, вдруг что изменится)

"ЧАСТИЧНАЯ КОМПЕНСАЦИЯ БРАКА" - начисление за брак/потерю товара

"КОМПЕНСАЦИЯ ПОДМЕНЕННОГО ТОВАРА" - начисление за брак/потерю товара

"УДЕРЖАНИЕ" - разновидность штрафов

"ШТРАФ" - разновидность штрафов

"ШТРАФЫ" - разновидность штрафов

"ХРАНЕНИЕ" - хранение товара

"КОРРЕКЦИЯ ПРОДАЖ" - корректировка для продажи

"КОРРЕКТНЫЙ ВОЗВРАТ" - корректировка для возврата

"АВАНСОВАЯ ОПЛАТА ЗА ТОВАР БЕЗ ДВИЖЕНИЯ" - начисления за товар который лежит на складах и не продается

Поля с суммами
Транзакция.ppvz_for_pay - сумма продажи, в рублях

Транзакция.delivery_rub - сумма которую вб забирает за доставку (приходит как положительная)

Транзакция.penalty - сумма штрафов (приходит как положительная)

Транзакция.additional_payment - доплаты (приходит как положительная)

Транзакция.storage_fee - стоимость хранения (приходит как положительная, в некоторых транзакциях может отсутствовать поле)

Транзакция.deduction - прочие удержания/выплаты (приходит как положительная, в некоторых транзакциях может отсутствовать поле)

Поля которые использую при загрузке

Транзакция.shk_id - штрихкод отправления числом

Транзакция.rr_dt - дата начисления

Транзакция.realizationreport_id - уникальный номер отчета

Транзакция.rrd_id - уникальный номер транзакции внутри отчета

Транзакция.supplier_oper_name - тип транзакции (продажа/возврат)

Транзакция.barcode - код номенклатуры

Не рассчитываю на уникальность или супер знания, но верю, что данная статья поможет кому-то сократить время разбора ответов и получения данных по апи от сервиса WB.

Спасибо всем за внимание.

Дополнение от 08.05.2024
Все остается прежним, кроме того что теперь у метода v5
// GET https://statistics-api.wildberries.ru/api/v5/supplier/reportDetailByPeriod

Готовое решение

Загрузка отчета о продажах WildBerries для бухгалтера

Загрузка данных детализированного отчета о продажах WildBerries в 1С документ "Отчет комиссионера" для бухгалтера для следующих конфигураций 1С: БП 3.0; УНФ 3.0; УТ 10.3; УТ 11.4/11.5, КА 2.4/2.5 и ERP 2.4/2.5


wb статистика wildberries api запросы

См. также

Маркетплейсы Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Подключите маркетплейсы Ozon, WB, АлиЭкспресс, ЛаМода и ЯндексМаркет к 1С. Удобное управление заказами, остатками и синхронизация данных из одного окна 1С для УНФ, УТ, КА, ERP. Единый интерфейс работы для всех площадок. Отправка остатков по сопоставленным товарам по расписанию, гибкая настройка отправки.

12415 руб.

23.01.2023    41915    339    196    

170

Маркетплейсы Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

Интеграция маркетплейсов с 1С:УТ 10.3, КА 1.1, УПП 1.3. Автоматизация по FBS/FBO, управление заказами и синхронизация остатков для старых конфигураций. Поддержка RICH-контента OZON

28800 руб.

12.05.2021    98060    670    273    

306

SALE! 20%

Маркетплейсы Программист Пользователь Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Полноценный обмен со всеми маркетплейсами: МегаМаркет, Wildberries, Яндекс.Маркет, OZON, VK, ALI, Авито. Так же подключили сервис Dostavista, автоматическая отправка заказов на доставку. Данный модуль позволяет полностью интегрировать 1С:УТ11.4/11.5, 1С:КА 2.4/2.5 и 1С:ERP 2.4/2.5 по API с Wldberries, Яндекс.Маркет, OZON, ALI, VK и МегаМаркет. 1С:Розница 2.3/УНФ 1.6 и выше с МегаМаркет. Схемы работы: ВИТРИНА + ДОСТАВКА, ЗАКАЖИ И ЗАБЕРИ + ВИТРИНА, ДОСТАВКА СИЛАМИ ПРОДАВЦА, ЭКСПРЕСС-ДОСТАВКА. Модуль зарегистрирован в Реестре программного обеспечения, а также являемся технологическими партнерами МегаМаркет, что говорит о гарантиях использования решения.

60000 руб.

09.10.2020    56837    124    82    

119

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, МагнитЭкспресс (быв.Казань-Экспресс), Леруа Мерлен, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:КА 2, 1С:ERP Управление предприятием. Возможность подключить любые маркетплейсы. Анализ продаж ОZON. 30 дней БЕСПЛАТНОГО пользования!

3600 руб.

12.08.2021    36426    368    68    

160

Маркетплейсы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Функциональное решение для торговли на всех популярных маркетплейсах. Работает со схемами FBO и FBS. Простое в использовании и установке, не вносит изменения в код программы. Существенно упрощает работу с товарным ассортиментом, обработку заказов с площадок, работу с поставками, а также ведение аналитики по продажам и остаткам.

119999 руб.

19.07.2024    2433    54    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. smit1c 106 20.03.24 08:44 Сейчас в теме
WB уже несколько месяцев не может починить свой reportDetailByPeriod,
постоянно какие-то ошибки....
2. ix5s 134 20.03.24 10:06 Сейчас в теме
(1)тут не поспоришь, вроде сейчас пока пару недель стабильно)
3. muratov86 21.03.24 12:08 Сейчас в теме
Вам выдаёт отчёты за февраль?
4. ix5s 134 21.03.24 12:24 Сейчас в теме
5. muratov86 21.03.24 14:48 Сейчас в теме
(4) теперь там технические работы до 22.03.2024)
6. ix5s 134 21.03.24 15:39 Сейчас в теме
(5)
22.03.2024

Попробовал тоже, "message": "Технические работы до 22 марта, 9:00"
Что то не идет у них с v3) подождем, поправят
7. GODCRM 9 04.04.24 09:25 Сейчас в теме
БлагоДарю, вовремя, от Души 🙏
8. ovt256 10.04.24 10:29 Сейчас в теме
Детализированный отчет о продажах, выгруженный в Эксель, имеет 370 строк (транзакций), а массив, полученный по АПИ за тот же период - всего 58.
Кто-нибудь сталкивался с подобным расхождением в количествах строк?
9. user1311046 11.04.24 13:55 Сейчас в теме
(8) Да, столкнулись. По api 136 000 строк, по отчету ВБ 170 000 должно быть.
И они молчат, говорят нам, что мы криво выгружаем... по их инструкции.
Обновленная БП 3.0.150.39 не может загрузить отчеты с февраля.
10. ovt256 12.04.24 12:47 Сейчас в теме
(9) Это странно, учитывая что остальные отчеты у меня выгружаются полностью, а грузится не полностью именно февральский отчет. Тут явно дело не в наших кривых руках...
11. user1311046 12.04.24 13:23 Сейчас в теме
(10) Уже устали бороться с их службой поддержки.
Они ссылаются, что мы не изучили api.
Просим выгрузить их самих этот недостающий кусок и доказать, что у них это работает. А они молчат в ответ.
Период который выгружается некорректно 02.26-03.03

Зашел менеджер, сказал что и проблемы с отчетом за апрель возникли.
12. ix5s 134 08.05.24 10:29 Сейчас в теме
Поправил обращение на API, теперь у WB v5 у метода, так же теперь метод отдает пустоту если нет данных, хотя болжен возвращать null и в понедельник в технический перерыв не уходит.

GET https://statistics-api.wildberries.ru/api/v5/supplier/reportDetailByPeriod
Оставьте свое сообщение