Изменение наименования товара на Wildberries
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обработка для изменения наименования номенклатуры на сайте WB посредством API.
Полноценно рабочая, но с минимальным функционалом.
Как пользоваться: На форме необходимо выбрать Организацию и нажать на кнопку "Получить значения", обработка запросит список номенклатуры из вашего магазина и заполнит таблицу на форме для дальнейшей работы.
Также во вкладке Настройки есть возможность выбрать конкретную номенклатуру по его Артикулу в маркетплейсе.
Поля "Ограничение списка" нужны для того, чтобы выбрать определенное количество товаров (если их много), пропустив (если необходимо) указанное количество.
Очередность товаров в данном списке на усмотрение Маркетплейса.
После заполнения таблицы и для активации кнопки "Применить значение" необходимо заполнить одно из полей колонки "Новое наименование".
После нажатия "Применить значение" наименование на маркетплейсе изменяется на указанное. Обновление на сайте происходит до 30 минут, в зависимости от количества SKU. В среднем 10 минут.
Обработка не привязана к конфигурации и не имеет ограничений по платформе.
Тестировалась на платформе 8.3.18, в конфигурациях УТ11.4.13 и Бухгалтерия 3.0.108
Для полноценной работы необходимо в справочнике Организации добавить дополнительный реквизит, строка, с именем "WB_ApiKey". А также в хараrтеристике реквизит "КодВБ" (по желанию можно переписать откуда брать "nmID" - код обработки открыт)
Затем вставить туда API ключ, который можно получить в личном кабинете WB.
Руководство по получению API можно найти в сети. Как вариант по ссылке //infostart.ru/public/1581395/
Если скачивать обработку нет желания, вот основные функции:
1. Получение данных:
Соединение = Новый HTTPСоединение("suppliers-api.wildberries.ru",,,,,5, Новый ЗащищенноеСоединениеOpenSSL());
//Заполняем заголовки
HTTPЗапросЗаголовки = Новый Соответствие();
HTTPЗапросЗаголовки.Вставить("accept", "application/json");
HTTPЗапросЗаголовки.Вставить("Authorization", APIKey);
HTTPЗапросЗаголовки.Вставить("Content-Type", "application/json");
Запрос = Новый HTTPЗапрос("/card/list", HTTPЗапросЗаголовки);
СериализованнаяСтрока = СобратьЗапросКарточек(КоличествоSKU,ПропуститьSKU,КодSKU);
Запрос.УстановитьТелоИзСтроки(СериализованнаяСтрока);
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос);
Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
Если HTTPОтвет.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Ответ);
Стрктурра = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
НомерСтроки = 0;
Для каждого стр из Стрктурра.result.cards Цикл
НомерСтроки = НомерСтроки+1;
СтрокаТЗ = Объект.ТЗ.Добавить();
Для каждого стр_nomenclatures из стр.nomenclatures Цикл
СтрокаТЗ.imtId = УбратьВсеПробелы(стр_nomenclatures.nmId);
КонецЦикла;
СтрокаТЗ.Наименование = "";
Для каждого стр_type из стр.addin Цикл
Если ВРЕГ(стр_type.type) = ВРЕГ("Наименование") Тогда
Если стр_type.params.Количество()>0 Тогда
СтрокаТЗ.Наименование = стр_type.params[0].value;
КонецЕсли;
КонецЕсли;
КонецЦикла;
СтрокаТЗ.НаименованиеНовое = "";
СтрокаТЗ.ИдентификаторСтроки = НомерСтроки;
СтрокаТЗ.Номенклатура1С = ПолучитьНоменклатуруПоID(СтрокаТЗ.imtId);
СтрокаТаблицаJSONОбъектов = ЭтаФорма.ТаблицаJSONОбъектов.Добавить();
СтрокаТаблицаJSONОбъектов.ИдентификаторСтроки = НомерСтроки;
СтрокаТаблицаJSONОбъектов.СтрокаJSON = стр;
КонецЦикла;
Иначе
Сообщить("NOPE, обратитесь к Программисту 1С");
КонецЕсли;
2. Применить значения.
Соединение = Новый HTTPСоединение("suppliers-api.wildberries.ru",,,,,5, Новый ЗащищенноеСоединениеOpenSSL());
//Заполняем заголовки
HTTPЗапросЗаголовки = Новый Соответствие();
HTTPЗапросЗаголовки.Вставить("accept", "application/json");
HTTPЗапросЗаголовки.Вставить("Authorization", APIKey);
HTTPЗапросЗаголовки.Вставить("Content-Type", "application/json");
Запрос = Новый HTTPЗапрос("/card/update", HTTPЗапросЗаголовки);
СериализованнаяСтрока = СобратьЗапросОбновленияКарточки(стр.ИдентификаторСтроки,стр.НаименованиеНовое);
Запрос.УстановитьТелоИзСтроки(СериализованнаяСтрока);
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос);
Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
Если HTTPОтвет.КодСостояния = 200 Тогда
Сообщить("Наименование для номенклатуры с Артикулом WB "+стр.imtID+" удачно изменено на: "+стр.НаименованиеНовое);
Иначе
Сообщить("Ошибка измнения наименования ("+стр.imtID+") :"+стр.НаименованиеНовое);
Сообщить("Код ответа: "+Ответ.КодСостояния); //анализируем код состояния и делаем выводы
КонецЕсли;
3. Сбор Запросов
Функция СобратьЗапросКарточек(Лимит=0,ОФсет=0,КодSKU=Неопределено)
Если Лимит>100 Тогда Лимит=100 КонецЕсли;
СтруктураЗ = Новый Структура;
СтруктураЗ.Вставить("id",1);
СтруктураЗ.Вставить("jsonrpc","2.0");
СтрПарам = Новый Структура;//Params
СтрФильтра = Новый Структура;
Если ЗначениеЗаполнено(КодSKU) И СокрЛП(КодSKU)<>"" Тогда
СтрФинд = Новый Структура;
СтрФинд.Вставить("column","nomenclatures.nmId");
МассивСКУ = Новый Массив();
МассивСКУ.Добавить(Число(КодSKU));
СтрФинд.Вставить("search", МассивСКУ);
МассивФинд = Новый Массив;
МассивФинд.Добавить(СтрФинд);
СтрФильтра.Вставить("find",МассивФинд);
КонецЕсли;
// СтрФильтра.Вставить("order",СтрОрдер);
СтрПарам.Вставить("filter",СтрФильтра);
СтрЗапроса = Новый Структура;
Если КоличествоSKU<>0 Тогда
СтрЗапроса.Вставить("limit",Лимит);//max 100
КонецЕсли;
Если ПропуститьSKU<>0 Тогда
СтрЗапроса.Вставить("offset",ОФсет);
КонецЕсли;
СтрПарам.Вставить("query",СтрЗапроса);
// СтрПарам.Вставить("isArchive", ЛОЖЬ);
// СтрПарам.Вставить("supplierID",Объект.supplierID);
// СтрПарам.Вставить("withError", ЛОЖЬ);
СтруктураЗ.Вставить("params",СтрПарам);
НастройкиСериализацииJSON = Новый НастройкиСериализацииJSON;
НастройкиСериализацииJSON.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
НастройкиСериализацииJSON.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураЗ, НастройкиСериализацииJSON);
Результат = ЗаписьJSON.Закрыть();
Возврат Результат;
КонецФункции
Функция СобратьЗапросОбновленияКарточки(Идентификатор, НовоеНаименование)
НайденнаяСтрока = ЭтаФорма.ТаблицаJSONОбъектов.НайтиСтроки(Новый Структура("ИдентификаторСтроки",Идентификатор));
Если НайденнаяСтрока.Количество() > 0 Тогда
ПрежняяСтруктура = НайденнаяСтрока[0].СтрокаJSON;
Иначе
Возврат Неопределено;
КонецЕсли;
//Меняем наименование
Для каждого стр_type из ПрежняяСтруктура.addin Цикл
Если ВРЕГ(стр_type.type) = ВРЕГ("Наименование") Тогда
Если стр_type.params.Количество()>0 Тогда
стр_type.params[0].value = НовоеНаименование;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//Модификация для выгрузки
ПрежняяСтруктура.Вставить("uploadID", "");
ПрежняяСтруктура.Удалить("batchID");
//Меняем дату модификации
ПрежняяСтруктура.updatedAt = ТекущаяДата()+60;
СтруктураЗ = Новый Структура;
СтруктураЗ.Вставить("id",1);
СтруктураЗ.Вставить("jsonrpc","2.0");
СтрПарам = Новый Структура;//Params
СтрПарам.Вставить("card",ПрежняяСтруктура);
СтрПарам.Вставить("supplierID",ПрежняяСтруктура.supplierID);
СтруктураЗ.Вставить("params",СтрПарам);
НастройкиСериализацииJSON = Новый НастройкиСериализацииJSON;
НастройкиСериализацииJSON.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата;
НастройкиСериализацииJSON.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураЗ, НастройкиСериализацииJSON);
Результат = ЗаписьJSON.Закрыть();
Возврат Результат;
КонецФункции
Вступайте в нашу телеграмм-группу Инфостарт
См. также
67620 руб.
22.03.2021 313553 2603 2186
23.01.2023 82727 785 user1468243 212
28800 руб.
12.05.2021 123662 1073 274
5490 руб.
12.08.2021 48524 654 71
6000 руб.
11.12.2019 68100 1163 3
6000 руб.
26.11.2020 51323 865 4