Обмен заказами и остатками между маркетплейсом Wildberries и конфигурацией 1С:Розница

09.03.24

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

Представляю Вашему вниманию обработку для конфигурации 1С:Розница, при помощи которой можно осуществлять обмен остатками и заказами с маркетплейсом Wildberries. Данная обработка может быть подключена в качестве дополнительной внешней обработки  и использоваться для обмена заказами и остатками с вышеуказанным маркетплейсом. Кроме того, она может послужить основой для адаптации  программистами под нужды заказчика, а  также использоваться как примеры работы с Wildberries api и http запросами (в определенной степени).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Обмен заказами и остатками с маркетплейсом Wildberries и 1с:Розница:
.epf 24,79Kb
8
8
9 SM
Скачать Купить за 4 250 руб.
Обмен заказами и остатками с маркетплейсом Wildberries и конфигурацией 1С:Розница для API V3
.epf 24,54Kb
2
2
9 SM
Скачать Купить за 4 250 руб.

Прежде всего о модели работы. Предполагается, что номенклатура на маркетплейсе создается и заполняется в личном кабинете, то есть его средствами, синхронизация номенклатуры осуществляется по штрихкодам, это также позволяет работать с характеристиками в базе. Новые заказы загружаются в базу и переходят в статус "Принят к обработке", их обработка происходит также в личном кабинете маркетплейса. После  обработки и закрытия заказа, в базе по нему создается  реализация, заказ закрывается. Таким образом, в базе отражаются продажи по маркетплейсу. Продажи осуществляются обезличенно, контрагенту Wildberries. Заказы могут загружаться фоновым заданием по расписанию, а также вручную из формы обработки . Расписание выгрузки остатков и  загрузки заказов определяется при подключении дополнительной обработки.

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

Интерфейс  обработки прост и практичен, в шапке указывается токен, идентификатор склада (Warehouse id), и расположены 3 кнопки: Загрузить заказы, Обработать закрытые заказы, Обновить остатки.  Полагаю, что действия кнопок очевидны и не нуждаются в дополнительном описании.

 

 

Чуть ниже расположены 2 закладки: Заказы вайлдбериз и Отборы номенклатуры для выгрузки. На закладке "Заказы вайлдбериз" отображается список  новых заказов полученных с маркетплейса Вайлдбериз после нажатия на кнопку "Загрузить заказы". Таким образом, можно просмотреть результат работы обработки по получению новых заказов.

На закладке "Отборы номенклатуры для выгрузки" можно произвольно настроить отбор номенклатуры для выгрузки по ее реквизитам и при этом сохранить эти настройки.

 

 

При сохранении настроек сохраняются не только сделанные отборы, но и токен, и идентификатор склада.

В дальнейшем эти настройки используются при работе обработки по расписанию, также они считываются и при открытии формы. Сохранение настроек работает только в случае, когда обработка подключена как дополнительная внешняя обработка. Поля возможные для отборов определяются макетом схемы компоновки данных обработки, в которой описаны данные получаемые из базы для выгрузки остатков на маркетплейс. Программист может переопределить в макете получаемые данные, соответствующим образом изменятся и возможные поля для отбора. Вот и все что касается интерфейса обработки.

Теперь немного о реализации. При выгрузке остатков сначала получаются данные об имеющихся остатках на маркетплейсе. Это делается для того, чтобы в случае отсутствия данных по остаткам какой-либо номенклатуры, передавались нулевые остатки.  Форматы передаваемых запросов, получаемых ответов с маркетплейса были взяты отсюда: https://suppliers-api.wildberries.ru/swagger/index.html. Вкратце, вся суть запросов, передающих данные на маркетплейс, заключается в том, что в его тело помещается строка в формате json (Java script object notation). Платформа  имеет средства для работы с этим форматом. Один из способов создания строки в данном формате является предварительная подготовка массива структур. Поля структуры станут полями формата. Если поля формата  json будут иметь названия, неприменимые для именования ключа структуры, то можно подготовить не структуру, а соответствие. В нашем случае структура вполне подходит. Рассмотрим пример выгрузки остатков. На ресурсе https://suppliers-api.wildberries.ru/swagger/index.html описан запрос отправляемый для выгрузки остатков: 

 

   

Мы видим, что это должен быть POST запрос содержащий список в формате  json с полями barcode, stock и wharehouseId (штрихкод, количество и идентификатор склада соответственно). В случае успешной обработки запроса возвращается код ответа 200 и список ошибок загрузки остатков (если ошибок нет, то список будет пустой).

 

 

На вкладке schema тела запроса можно посмотреть типы данных для каждого поля:

 

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

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 МассивОстатков = Новый Массив;
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 	СтруктураДанных  = Новый Структура("barcode,stock,warehouseId" );
	 	ЗаполнитьЗначенияСвойств(СтруктураДанных,ВыборкаДетальныеЗаписи);
		//идентификатор вашего склада на Вайлдберриз, необходимо его заполнить предварительно и сохранить в настройках обработки
	 	СтруктураДанных.warehouseId = warehouseId;
	 	МассивОстатков.Добавить(СтруктураДанных);
	 КонецЦикла;

После того как массив структур подготовлен, нам надо преобразовать его в формат json это делается при помощи объекта  ЗаписьJSON.

//формируем строку в формате  json
//поля и их формат подробно описаны на https://suppliers-api.wildberries.ru/swagger/index.html
	ЗаписьДжейсон = Новый ЗаписьJSON;
	Пар = новый ПараметрыЗаписиJSON;
	ЗаписьДжейсон.УстановитьСтроку(Пар);
	ЗаписатьJSON(ЗаписьДжейсон,МассивОстатков);
	СтрокаДжейсон = ЗаписьДжейсон.Закрыть();

Когда тело запроса  в виде строки json готово, приступим к созданию самого запроса:

Сервер = "suppliers-api.wildberries.ru";
SSLСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Метод = "/api/v2/stocks";
HTTPСоединение = Новый HTTPСоединение(Сервер,443,,,,,SSLСоединение); 
ИмяФайла = ПолучитьИмяВременногоФайла("json");
Запрос = СформироватьHTTPЗапрос(Метод);
Запрос.УстановитьТелоИзСтроки(СтрокаДжейсон,КодировкаТекста.UTF8);
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(Запрос,ИмяФайла);

Куда отправлять запросы и как называется метод мы посмотрели на сваггере (https://suppliers-api.wildberries.ru/swagger/index.html). Для всех запросов сервер будет одинаков: suppliers-api.wildberries.ru, для отправки остатков используем метод /api/v2/stocks.  Сам запрос формируется у нас в функции СформироватьHTTPЗапрос(Метод). Они приведена ниже:

Функция СформироватьHTTPЗапрос(Метод) Экспорт
	Запрос = Новый HTTPЗапрос(Метод);
	//Токен выдается в личном кабинете, надо подставить свой
	Запрос.Заголовки.Вставить("Authorization", Токен);
	Запрос.Заголовки.Вставить("Content-Type", "application/json");
	Возврат Запрос;
	
		
КонецФункции

 

Обратите внимание, мы должны отправить Post запрос, поэтому для нашего соединения выполняем метод ОтправитьДляОбработки. Соответствие методов соединения можно посмотреть во встроенной справке по объекту HTTPСоединение. Для того, чтобы поместить нашу строку  в формате json в тело запроса, используем метод запроса УстановитьТелоИзСтроки, где вторым параметром указываем кодировку. Для того, чтобы обработать ответ от маркетплейса, нам потребуется передать в запросе имя файла куда он будет помещен, для этих целей получаем имя временного файла, а затем читаем его при помощи объекта Чтениеjson. Функция глобального контекста Прочитатьjson возвращает нам в виде структуры данные из файла и мы можем работать с ними привычными нам методами. Коллекции данных в этой структуре существуют в виде массивов структур. После этого, обрабатываем ответ от маркетплейса :

Если HTTPОтвет.КодСостояния = 200 Тогда
		ЧтениеДжейсон = Новый ЧтениеJSON;
		ЧтениеДжейсон.ОткрытьФайл(ИмяФайла);
		ДанныеОтвета = ПрочитатьJSON(ЧтениеДжейсон);
		Сообщить("Остатки обновлены, количество обновленных элементов:"+ МассивОстатков.Количество());
		МассивОшибок = ДанныеОтвета.data.errors;
		Если ТипЗнч(МассивОшибок) = Тип("Массив") И МассивОшибок.Количество()>0 Тогда
			Для каждого СтруктураОшибки Из МассивОшибок Цикл
				ТекстСообщения = "штрихкод:" + СтруктураОшибки.barcode+ " ошибка:"+ СтруктураОшибки.err;
				Сообщить(ТекстСообщения);
			КонецЦикла;
		Иначе 
			Сообщить("Количество ошибок при обновлении остатков: 0" );
		КонецЕсли;
		
		
Иначе
		
		Сообщить ("Ошибка выполнения запроса, код ошибки "+ HTTPОтвет.КодСостояния );		
		
КонецЕсли;

На примере выгрузки остатков показан принцип работы с api маркетплейса, способ формирования данных в требуемом формате, обработки полученного ответа. Надеюсь, что рассмотренный пример даст понимание, каким образом можно получать и отправлять данные для маркетплейса Wildberries из прикладного решения на платформе 1С. Возможно, также кому-то пригодится и сама обработка или ее код в качестве основы для дальнейшей модификации под свои нужды.

Обработка тестировалась на редакции 2.3.9.37, платформа 8.3.18.1741, на редакции 2.2 не тестировалась, но может быть адаптирована, доработок потребуется минимум.

Проверено на следующих конфигурациях и релизах:

  • Розница, редакция 2.3, релизы 2.3.9.37

Обмен Wildberries Вайлбдерриз Розница заказы остатки апи api

См. также

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

Расширения позволяют взаимодействовать с личными кабинетами маркетплейсов WILDBERRIES, ОЗОН, ЯНДЕКС.МАРКЕТ и СБЕРМЕГАМАРКЕТ по схеме: FBS. Основным приоритетом в данной разработке является простота запуска и использования, а так же увеличение скорости сборки и обклейки стикерами заказов при больших объемах отгрузок.

58800 руб.

22.03.2021    198564    1114    1690    

605

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

Расширение интеграции с маркетплейсами позволяет управлять своими аккаунтами ведущих маркетплейсов по принципу одного окна из своей базы 1С для УНФ, УТ, КА, ERP. Единый интерфейс работы для всех площадок. Отправка остатков по сопоставленным товарам по расписанию, гибкая настройка отправки.

49800 руб.

23.01.2023    34711    363    190    

141

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

Готовая интеграция и синхронизация с Озон и Вайлдберриз для управляемых форм. Конфигурация встраивается в типовую УТ10.3, КА 1.x, УПП 1.3 или самописные конфигурации. Программа осуществляет выгрузку карточек товаров в ОЗОН/Wildberries, загрузку и синхронизацию ранее загруженных в ОЗОН/Wildberries карточек с номенклатурой в 1С, гибкую настройку синхронизации по номенклатуре, характеристикам, сериям и единицам измерения, а также загрузку отправлений ОЗОН/ Сборочных заданий Wildberries и создание на их основании документов в 1С и управление статусами отправлений ОЗОН/ Сборочных заданий Wildberries. Два варианта документооборота: Заказ покупателя - Реализация и Внутренний заказ - Перемещение - Реализация. Минимальная платформа 8.3.10

49900 руб.

12.05.2021    90746    589    272    

272

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

Модуль для интеграции 1С с сервисом СберМаркет/Купер. Предназначен для обмена данными из торговых точек розничных сетей из баз данных 1С в базы данных СберМаркет/Купер, для отображения информации по товарам, остаткам, ценам, заказам и статусам заказов. Позволяет оперативно начать работать с сервисом СберМаркет, существенно повысить продажи и лояльность клиентов.

35000 руб.

14.10.2022    8738    15    14    

11

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

Расширение позволяет работать из 1С с площадкой Wildberries, Яндекс Маркет (без публикации базы), СберМегамаркет по Схеме FBS и FBO В FBO реализован механизм сборки коробов по штрих кодам в Wildberries. Отличительная особенность легкая настройка и информативный управленческий учет! Всего через 15 минут вы сможете полностью автоматизировать свои продажи на WB, ЯМ, Мегамаркет и узнать какую итоговую выручку вы получаете за вычетом всех комиссий ВБ, ЯМ, Мегамаркет. Исключите штрафы за продажу товара отсутствующего на складе и не своевременную передачу кодов маркировок, легкий и интуитивно понятный интерфейс позволит перенести всю работу с площадкой в 1С. Есть Демо.

30000 руб.

17.07.2023    9441    40    20    

31

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

Расширение SynchroSber полноценный информационный обмен (остатки, цены, заказы) между маркетплейсом Мегамаркет (СберМегаМаркет) (megamarket.ru) и 1С:Управление торговлей 11.4, 11.5, ERP Управление предприятием 2.4, 2.5, Комплексная автоматизация 2.4, 2.5, 1С:Управление нашей фирмой 1.6, 3.0 через API интерфейс. Модуль API интеграции с маркетплейсом Мегамаркет интегрируется в 1С без каких-либо изменений вашей конфигурации. Поддержка 1C облачных сервисов Scloud.ru и 1С:Готовое рабочее место.

19920 руб.

24.01.2022    37478    102    81    

98
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Chebchic 05.02.24 11:20 Сейчас в теме
Добрый день. Подскажите, в феврале 2024 обработка актуальна?
2. user596590_pavel.kuznecov 46 05.02.24 11:55 Сейчас в теме
(1) Добрый день. Видимо, нет, так как версия api изменилась, теперрь используется версия 3.0. По всей видимости, надо адаптировать
3. Chebchic 05.02.24 13:39 Сейчас в теме
4. user596590_pavel.kuznecov 46 05.02.24 14:07 Сейчас в теме
(3) да, можно попробовать, но мне потребуется от Вас токен для отладки.
5. Chebchic 05.02.24 14:34 Сейчас в теме
запросто
в личку кину
6. Chebchic 05.02.24 14:36 Сейчас в теме
осталось понять как написать в личку, чтобы видели только Вы. Может в почте пришлю?
7. user596590_pavel.kuznecov 46 05.02.24 14:51 Сейчас в теме
(6) Напишите мне сообщение, можно и по почте, в приницпе
8. пользователь 05.02.24 14:56
Сообщение было скрыто модератором.
...
9. Chebchic 06.02.24 10:57 Сейчас в теме
10. user596590_pavel.kuznecov 46 06.02.24 12:47 Сейчас в теме
(9) я в личку написал, 8е сообщение скрыто модератором
11. пользователь 07.04.24 16:03
Сообщение было скрыто модератором.
...
12. G_102414889362602011509 08.04.24 08:36 Сейчас в теме
Здравствуйте! На данный момент обработка актуальна?
13. user2036779 01.07.24 11:26 Сейчас в теме
Здравствуйте! При нажатии кнопки "Обновить остатки" появляется ошибка
Передано значение недопустимого типа
{ВнешняяОбработка.ОбменСВайлдбериз.МодульОбъекта(128)}: ЗаписатьJSON(ЗаписьДжейсон,СтруктураОстатков);
{ВнешняяОбработка.ОбменСВайлдбериз.МодульОбъекта(33)}: ОбновитьОстатки();
{ВнешняяОбработка.ОбменСВайлдбериз.Форма.Форма.Форма(210)}: ОбработкаОбъект.ВыполнитьКоманду("ОбновитьОстатки", ПараметрыВыполнения);
{ВнешняяОбработка.ОбменСВайлдбериз.Форма.Форма.Форма(230)}: ОбновитьОстаткиНаСервере();

по причине:
Передано значение недопустимого типа
Оставьте свое сообщение