1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

VK: товары, подборки, свойства товаров

This commit is contained in:
Anton
2024-02-15 18:45:28 +03:00
parent ae585f3fd5
commit 2d59b68aaa
2 changed files with 288 additions and 17 deletions

View File

@@ -784,11 +784,14 @@
#Область РаботаСТоварами
Функция ДобавитьТовар(Знач ОписаниеТовара, Знач Параметры = "") Экспорт
Функция ДобавитьТовар(Знач ОписаниеТовара, Знач Подборка = "", Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("v", "5.199");
ОсновноеФото = ОписаниеТовара["ОсновноеФото"];
ДопФото = ОписаниеТовара["ДополнительныеФото"];
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
Если ЗначениеЗаполнено(ОсновноеФото) Тогда
Ответ = ЗагрузитьФотоНаСервер(ОсновноеФото, Параметры_, "Товар");
@@ -796,12 +799,33 @@
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
Параметры_.Вставить("main_photo_id", ИДФото);
КонецЕсли;
ДобавитьДополнительныеФотоТовара(ДопФото, Параметры_);
Для Каждого Поле Из ПолучитьСоответствиеПараметровТовара() Цикл
Параметры_.Вставить(Поле.Значение, ОписаниеТовара[Поле.Ключ]);
КонецЦикла;
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.add", Параметры_);
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.add", Параметры_);
ИДТовара = Ответ["response"]["market_item_id"];
ИДТовара = OPI_Инструменты.ЧислоВСтроку(ИДТовара);
Если ЗначениеЗаполнено(Подборка) Тогда
ОтветПодборки = ДобавитьТоварВПодборку(ИДТовара, Подборка, Параметры_);
КонецЕсли;
Возврат Ответ;
КонецФункции
Функция УдалитьТовар(Знач Товар, Знач Параметры = "") Экспорт
Товар = OPI_Инструменты.ЧислоВСтроку(Товар);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("item_id", Товар);
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.delete", Параметры_);
Возврат Ответ;
@@ -812,20 +836,21 @@
Товар = Новый Соответствие();
Товар.Вставить("Имя" , "Новый товар"); // Имя товара
Товар.Вставить("Описание" , "Описание товара"); // Описание товара
Товар.Вставить("Категория" , "1210"); // См ПолучитьСписокКатегорийТоваров()
Товар.Вставить("Категория" , "20173"); // См ПолучитьСписокКатегорийТоваров()
Товар.Вставить("Цена" , 1); // Цена в руб.
Товар.Вставить("СтараяЦена" , Неопределено); // Для отражения изменения цены
Товар.Вставить("ОсновноеФото" , Неопределено); // ДД или путь к осн. фото
Товар.Вставить("Удален" , Ложь); // Признак неактивности
Товар.Вставить("URL" , Неопределено); // Ссылка на страницу магазина
Товар.Вставить("ДополнительныеФото" , Новый Массив); // Массив путей или ДД для доп. фото
Товар.Вставить("ЗначенияСвойств" , Новый Массив); // Значения свойств (варианты). Максимум 2
Товар.Вставить("ГлавныйВГруппе" , Ложь); // Сделать главным в своей группе
Товар.Вставить("НомерГруппы" , Неопределено);
Товар.Вставить("Ширина" , Неопределено); // В миллиметрах
Товар.Вставить("Высота" , Неопределено); // В миллиметрах
Товар.Вставить("Глубина" , Неопределено); // В миллиметрах
Товар.Вставить("Вес" , Неопределено); // В граммах
Товар.Вставить("SKU" , Неопределено);
Товар.Вставить("SKU" , Неопределено); // Артикул
Товар.Вставить("ДоступныйОстаток" , 1);
Возврат Товар;
@@ -853,6 +878,123 @@
#КонецОбласти
#Область РаботаСПодборками
Функция СоздатьПодборкуТоваров(Знач Название
, Знач Картинка
, Знач Основная = Ложь
, Знач Скрытая = Ложь
, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Товар");
ИДФото = Ответ["response"]["photo_id"];
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
Параметры_.Вставить("photo_id" , ИДФото);
Параметры_.Вставить("title" , Название);
Параметры_.Вставить("main_album" , ?(Основная, 1, 0));
Параметры_.Вставить("is_hidden" , ?(Скрытая, 1, 0));
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addAlbum", Параметры_);
Возврат Ответ;
КонецФункции
Функция ДобавитьТоварВПодборку(Знач МассивТовар, Знач Подборка, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
МассивТовар_ = Новый Массив;
Если Не ТипЗнч(МассивТовар) = Тип("Массив") Тогда
Товар = МассивТовар;
МассивТовар = Новый Массив;
МассивТовар.Добавить(Товар);
КонецЕсли;
Для Каждого Товар Из МассивТовар Цикл
МассивТовар_.Добавить(OPI_Инструменты.ЧислоВСтроку(Товар));
КонецЦикла;
СписокТоваров = СтрСоединить(МассивТовар_, ",");
Параметры_.Вставить("item_ids" , СписокТоваров);
Параметры_.Вставить("album_ids", Подборка);
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addToAlbum", Параметры_);
Возврат Ответ;
КонецФункции
Функция УдалитьПодборку(Знач Подборка, Знач Параметры = "") Экспорт
Подборка = OPI_Инструменты.ЧислоВСтроку(Подборка);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("album_id", Подборка);
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deleteAlbum", Параметры_);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСоСвойствамиТоваров
Функция СоздатьСвойствоТовара(Знач Название, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("title", Название);
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addProperty", Параметры_);
Возврат Ответ;
КонецФункции
Функция УдалитьСвойствоТовара(Знач Свойство, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("property_id", OPI_Инструменты.ЧислоВСтроку(Свойство));
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deleteProperty", Параметры_);
Возврат Ответ;
КонецФункции
Функция ДобавитьВариантСвойстваТовара(Знач Значение, Знач Свойство, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("property_id", OPI_Инструменты.ЧислоВСтроку(Свойство));
Параметры_.Вставить("title" , Свойство);
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.addPropertyVariant", Параметры_);
Возврат Ответ;
КонецФункции
Функция УдалитьВариантСвойстваТовара(Знач Вариант, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("variant_id", OPI_Инструменты.ЧислоВСтроку(Вариант));
Ответ = OPI_Инструменты.Get("api.vk.com/method/market.deletePropertyVariant", Параметры_);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область Прочие
// Сформировать клавиатуру.
@@ -1004,8 +1146,7 @@
Поля.Вставить("Описание" , "description");
Поля.Вставить("Категория" , "category_id");
Поля.Вставить("Цена" , "price");
Поля.Вставить("СтараяЦена" , "old_price");
Поля.Вставить("Удален" , "deleted");
Поля.Вставить("СтараяЦена" , "old_price");
Поля.Вставить("URL" , "url");
Поля.Вставить("ГлавныйВГруппе" , "is_main_variant");
Поля.Вставить("НомерГруппы" , "variant_ids");
@@ -1013,7 +1154,9 @@
Поля.Вставить("Высота" , "dimension_height");
Поля.Вставить("Глубина" , "dimension_length");
Поля.Вставить("Вес" , "weight");
Поля.Вставить("SKU" , "sku");
Поля.Вставить("SKU" , "sku");
Поля.Вставить("ДоступныйОстаток" , "stock_amount");
Поля.Вставить("ЗначенияСвойств" , "variant_ids");
Возврат Поля;
@@ -1056,4 +1199,27 @@
КонецПроцедуры
Процедура ДобавитьДополнительныеФотоТовара(Знач МассивФото, Параметры)
Если ТипЗнч(МассивФото) = Тип("Массив") Тогда
Если МассивФото.Количество() > 0 Тогда
СтрокаФотографий = "";
Для Каждого Фото Из МассивФото Цикл
Ответ = ЗагрузитьФотоНаСервер(Фото, Параметры, "Товар");
ИДФото = Ответ["response"]["photo_id"];
ИДФото = OPI_Инструменты.ЧислоВСтроку(ИДФото);
СтрокаФотографий = СтрокаФотографий + ИДФото + ",";
КонецЦикла;
СтрокаФотографий = Лев(СтрокаФотографий, СтрДлина(СтрокаФотографий) - 1);
Параметры.Вставить("photo_ids", СтрокаФотографий);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@@ -41,8 +41,8 @@
.ДобавитьСерверныйТест("ВК_СоздатьРекламнуюКампанию" , "Создать рекламную кампанию")
.ДобавитьСерверныйТест("ВК_ОтправитьСообщение" , "Отправить сообщение")
.ДобавитьСерверныйТест("ВК_ПолучитьКатегорииТоваров" , "Получить категории товаров")
.ДобавитьСерверныйТест("ВК_СоздатьТовар" , "Создать товар")
.ДобавитьСерверныйТест("ВК_СоздатьТоварПодборку" , "Создать товар и подборку")
.ДобавитьТестовыйНабор("Яндекс.Диск")
.ДобавитьСерверныйТест("ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске")
.ДобавитьСерверныйТест("ЯДиск_СоздатьПапку" , "Создать папку")
@@ -879,22 +879,127 @@
КонецПроцедуры
Процедура ВК_СоздатьТовар() Экспорт
Процедура ВК_СоздатьТоварПодборку() Экспорт
Параметры = ПолучитьПараметрыВК();
Картинка = ПолучитьДвоичные("Картинка");
Товар = OPI_VK.ПолучитьОписаниеТовара();
Товар.Вставить("ОсновноеФото", Картинка);
ИВФ = ПолучитьИмяВременногоФайла("png");
Картинка.Записать(ИВФ);
Результат = OPI_VK.ДобавитьТовар(Товар, Параметры);
Результат = OPI_VK.СоздатьПодборкуТоваров("Тестовая подборка"
, Картинка
, Истина
, Ложь
, Параметры);
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Соответствие")
.Свойство("response.albums_count").ИмеетТип("Число").Заполнено()
.Свойство("response.market_album_id").ИмеетТип("Число").Заполнено();
ИДПодборки = Результат["response"]["market_album_id"];
МассивКартинок = Новый Массив;
МассивКартинок.Добавить(ИВФ);
МассивКартинок.Добавить(Картинка);
Товар = Новый Соответствие();
Товар.Вставить("Имя" , "Тестовый товар 2");
Товар.Вставить("Описание" , "Описание товара");
Товар.Вставить("Категория" , "20173");
Товар.Вставить("Цена" , 1);
Товар.Вставить("СтараяЦена" , 15);
Товар.Вставить("ОсновноеФото" , Картинка);
Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations");
Товар.Вставить("ДополнительныеФото" , МассивКартинок);
Товар.Вставить("ГлавныйВГруппе" , Истина);
Товар.Вставить("НомерГруппы" , Неопределено);
Товар.Вставить("Ширина" , 20);
Товар.Вставить("Высота" , 30);
Товар.Вставить("Глубина" , 40);
Товар.Вставить("Вес" , 100);
Товар.Вставить("SKU" , 12345);
Товар.Вставить("ДоступныйОстаток" , "10");
Результат = OPI_VK.ДобавитьТовар(Товар, ИДПодборки, Параметры); // Добавление товара
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Соответствие")
.Свойство("response.market_item_id").ИмеетТип("Число").Заполнено();
ИДТовара = Результат["response"]["market_item_id"];
Результат = OPI_VK.ДобавитьТоварВПодборку(ИДТовара, ИДПодборки, Параметры); // Добавление в подборку
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Соответствие")
.Свойство("response").ИмеетТип("Число").Заполнено();
Результат = OPI_VK.УдалитьТовар(ИДТовара, Параметры); // Удаление товара
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Соответствие")
.Свойство("response").ИмеетТип("Число").Равно(1);
Результат = OPI_VK.УдалитьПодборку(ИДПодборки, Параметры); // Уадление подборки
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Соответствие")
.Свойство("response").ИмеетТип("Число").Равно(1);
КонецПроцедуры
Процедура ВК_СоздатьТоварСоСвойствами() Экспорт
Параметры = ПолучитьПараметрыВК();
Картинка = ПолучитьДвоичные("Картинка");
ИВФ = ПолучитьИмяВременногоФайла("png");
Картинка.Записать(ИВФ);
МассивВариантов = Новый Массив;
МассивВариантов.Добавить("Желтый");
МассивВариантов.Добавить("Синий");
МассивВариантов.Добавить("Красный");
Результат = OPI_VK.СоздатьСвойствоТовара("Цвет", Параметры);
Для Каждого Вариант Из МассивВариантов Цикл
КонецЦикла;
МассивКартинок = Новый Массив;
МассивКартинок.Добавить(ИВФ);
МассивКартинок.Добавить(Картинка);
Товар = Новый Соответствие();
Товар.Вставить("Имя" , "Тестовый товар 2");
Товар.Вставить("Описание" , "Описание товара");
Товар.Вставить("Категория" , "20173");
Товар.Вставить("Цена" , 1);
Товар.Вставить("СтараяЦена" , 15);
Товар.Вставить("ОсновноеФото" , Картинка);
Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations");
Товар.Вставить("ДополнительныеФото" , МассивКартинок);
Товар.Вставить("ГлавныйВГруппе" , Истина);
Товар.Вставить("НомерГруппы" , Неопределено);
Товар.Вставить("Ширина" , 20);
Товар.Вставить("Высота" , 30);
Товар.Вставить("Глубина" , 40);
Товар.Вставить("Вес" , 100);
Товар.Вставить("SKU" , 12345);
Товар.Вставить("ДоступныйОстаток" , "10");
Результат = OPI_VK.ДобавитьТовар(Товар, , Параметры); // Добавление товара
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Соответствие")
.Свойство("response.market_item_id").ИмеетТип("Число").Заполнено();
ИДТовара = Результат["response"]["market_item_id"];
OPI_VK.УдалитьТовар(ИДТовара, Параметры); // Удаление товара
Конецпроцедуры
#КонецОбласти
#Область YandexDisk