Каталог решений - Изменение наименования товара на Wildberries

Изменение наименования товара на Wildberries

Изменение наименования товара на Wildberries

В наличии

Обработка для изменения наименования номенклатуры на сайте WB посредством API.

Категория:

Описание

Обработка для изменения наименования номенклатуры на сайте WB посредством API.

Полноценно рабочая, но с минимальным функционалом.

Как пользоваться: На форме необходимо выбрать Организацию и нажать на кнопку "Получить значения", обработка запросит список номенклатуры из вашего магазина и заполнит таблицу на форме для дальнейшей работы.

Также во вкладке Настройки есть возможность выбрать конкретную номенклатуру по его Артикулу в маркетплейсе.

Поля "Ограничение списка" нужны для того, чтобы выбрать определенное количество товаров (если их много), пропустив (если необходимо) указанное количество.

Очередность товаров в данном списке на усмотрение Маркетплейса.

После заполнения таблицы и для активации кнопки "Применить значение" необходимо заполнить одно из полей колонки "Новое наименование".

После нажатия "Применить значение" наименование на маркетплейсе изменяется на указанное. Обновление на сайте происходит до 30 минут, в зависимости от количества SKU. В среднем 10 минут.

Обработка не привязана к конфигурации и не имеет ограничений по платформе.

Тестировалась на платформе 8.3.18, в конфигурациях УТ11.4.13 и Бухгалтерия 3.0.108

Для полноценной работы необходимо в справочнике Организации добавить дополнительный реквизит, строка, с именем "WB_ApiKey".

Затем вставить туда API ключ, который можно получить в личном кабинете WB.

Руководство по получению API можно найти в сети. Как вариант по ссылке //sale.itcity.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.Закрыть();
    
    Возврат Результат;
    
КонецФункции

 

has been added to your cart:
Оформление заказа