mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-04 03:48:40 +02:00
Начало Yandex Market
This commit is contained in:
parent
1ea186783d
commit
51c249c26c
BIN
data.json.gpg
BIN
data.json.gpg
Binary file not shown.
File diff suppressed because it is too large
Load Diff
323
src/ru/OInt/core/Modules/OPI_YandexMarket.os
Normal file
323
src/ru/OInt/core/Modules/OPI_YandexMarket.os
Normal file
@ -0,0 +1,323 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_YandexMarket.os
|
||||
// Lib: Yandex Market
|
||||
// CLI: yamarket
|
||||
|
||||
// MIT License
|
||||
|
||||
// Copyright (c) 2023 Anton Tsitavets
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
// BSLLS:Typo-off
|
||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
// BSLLS:NumberOfOptionalParams-off
|
||||
// BSLLS:UsingServiceTag-off
|
||||
// BSLLS:LineLength-off
|
||||
|
||||
//@skip-check module-structure-top-region
|
||||
//@skip-check module-structure-method-in-regions
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check method-too-many-params
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
#Использовать "../../tools"
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область КабинетыИМагазины
|
||||
|
||||
// Получить список магазинов
|
||||
// Получает список магазинов в кабинете по токену
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// Страница - Число - Номер страницы выдачи списка - page
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьСписокМагазинов(Знач Токен, Знач Страница = 1) Экспорт
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/campaigns";
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
РазмерСтраницы = 100;
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("page" , Страница , "Число", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("pageSize", РазмерСтраницы, "Число", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить магазин
|
||||
// Получает информацию о магазине (кампании) по ID
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьМагазин(Знач Токен, Знач IDМагазина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/campaigns/" + IDМагазина;
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки кабинета
|
||||
// Получает значения настроек кабинета по ID
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDКабинета - Строка, Число - ID кабинета - business
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьНастройкиКабинета(Знач Токен, Знач IDКабинета) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/businesses/%1/settings";
|
||||
URL = СтрШаблон(URL, IDКабинета);
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки магазина
|
||||
// Получает настройки магазина по ID
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьНастройкиМагазина(Знач Токен, Знач IDМагазина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/campaigns/%1/settings";
|
||||
URL = СтрШаблон(URL, IDМагазина);
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСТоварами
|
||||
|
||||
// Добавить обновить товары
|
||||
// Добавляет или обновляет информацию о товарах в каталоге
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDКабинета - Строка, Число - ID кабинета - business
|
||||
// МассивТоваров - Структура, Массив Из Структура - Массив описаний товаров - offers
|
||||
// СвоиИзображения - Булево - Признак использования только своих изображений товаров - pmedia
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ДобавитьОбновитьТовары(Знач Токен, Знач IDКабинета, Знач МассивТоваров, Знач СвоиИзображения = Ложь) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings/update";
|
||||
URL = СтрШаблон(URL, IDКабинета);
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("offerMappings" , МассивТоваров , "Массив", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("onlyPartnerMediaContent", СвоиИзображения, "Булево", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру товара
|
||||
// Получает структуру стандартных полей товара
|
||||
//
|
||||
// Примечание:
|
||||
// Описание в документации API: [UpdateOfferDTO](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings#updateofferdto)
|
||||
//
|
||||
// Параметры:
|
||||
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Структура полей товара
|
||||
Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
|
||||
|
||||
СтруктураТовара = Новый Структура;
|
||||
СтруктураТовара.Вставить("offerId", "<идентификатор товара в вашей системе>");
|
||||
|
||||
СтруктураРасходов = Новый Структура;
|
||||
СтруктураРасходов.Вставить("currencyId" , "<код валюты>");
|
||||
СтруктураРасходов.Вставить("value" , "<доп. расходы>");
|
||||
|
||||
СтруктураТовара.Вставить("additionalExpenses", СтруктураРасходов);
|
||||
СтруктураТовара.Вставить("adult" , "<параметр включает для товара пометку 18+>");
|
||||
|
||||
СтруктураВозраста = Новый Структура;
|
||||
СтруктураВозраста.Вставить("ageUnit", "<единица измерения: YEAR, MONTH>");
|
||||
СтруктураВозраста.Вставить("value" , "<возврастное ограничение>");
|
||||
|
||||
СтруктураТовара.Вставить("age", СтруктураВозраста);
|
||||
|
||||
МассивШтрихкодов = Новый Массив;
|
||||
МассивШтрихкодов.Добавить("<штрихкод>");
|
||||
|
||||
СтруктураТовара.Вставить("barcodes", МассивШтрихкодов);
|
||||
|
||||
СтруктураБазовойЦены = Новый Структура;
|
||||
СтруктураБазовойЦены.Вставить("currencyId" , "<код валюты>");
|
||||
СтруктураБазовойЦены.Вставить("value" , "<цена>");
|
||||
СтруктураБазовойЦены.Вставить("discountBase", "<цена до скидки>");
|
||||
|
||||
СтруктураТовара.Вставить("basicPrice", СтруктураБазовойЦены);
|
||||
СтруктураТовара.Вставить("boxCount", "<количество грузовых мест>");
|
||||
СтруктураТовара.Вставить("category", "<категория товара в вашем магазине>");
|
||||
|
||||
МассивСертификатов = Новый Массив;
|
||||
МассивСертификатов.Добавить("<номер документа на товар>");
|
||||
|
||||
СтруктураТовара.Вставить("certificates", МассивСертификатов);
|
||||
|
||||
СтруктураЦеныДляСкидок = Новый Структура;
|
||||
СтруктураЦеныДляСкидок.Вставить("currencyId" , "<код валюты>");
|
||||
СтруктураЦеныДляСкидок.Вставить("value" , "<цена>");
|
||||
|
||||
СтруктураТовара.Вставить("cofinancePrice", СтруктураЦеныДляСкидок);
|
||||
|
||||
СтруктураСостояния = Новый Структура;
|
||||
СтруктураСостояния.Вставить("quality", "<внешний вид товара>");
|
||||
СтруктураСостояния.Вставить("reason" , "<описание дефектов>");
|
||||
СтруктураСостояния.Вставить("type" , "<тип уценки>");
|
||||
|
||||
СтруктураТовара.Вставить("condition", СтруктураСостояния);
|
||||
|
||||
// TODO: Доописать
|
||||
СтруктураТовара.Вставить("customsCommodityCode", "<код товара ТН ВЭД>");
|
||||
СтруктураТовара.Вставить("description", "<подробное описание товара>");
|
||||
СтруктураТовара.Вставить("downloadable", "<признак цифрового товара>");
|
||||
СтруктураТовара.Вставить("guaranteePeriod", "<гарантийный срок>");
|
||||
СтруктураТовара.Вставить("lifeTime", "<срок службы>");
|
||||
|
||||
МассивРуководств = Новый Массив;
|
||||
МассивРуководств.Добавить("<руководство>");
|
||||
|
||||
СтруктураТовара.Вставить("manuals", МассивРуководств);
|
||||
|
||||
МассивСтран = Новый Массив;
|
||||
МассивСтран.Добавить("<страна производства>");
|
||||
|
||||
СтруктураТовара.Вставить("manufacturerCountries", МассивСтран);
|
||||
СтруктураТовара.Вставить("marketCategoryId", "<идентификатор категории на Маркете>");
|
||||
СтруктураТовара.Вставить("name", "<имя товара>");
|
||||
|
||||
МассивХарактеристик = Новый Массив;
|
||||
МассивХарактеристик.Добавить("<характеристика>");
|
||||
|
||||
СтруктураТовара.Вставить("parameterValues", МассивХарактеристик);
|
||||
|
||||
МассивКартинок = Новый Массив;
|
||||
МассивКартинок.Добавить("<ссылка на картинку товара>");
|
||||
|
||||
СтруктураТовара.Вставить("pictures", МассивКартинок);
|
||||
СтруктураТовара.Вставить("purchasePrice", "<себестоимость>");
|
||||
СтруктураТовара.Вставить("shelfLife", "<срок годности>");
|
||||
|
||||
МассивТэгов = Новый Массив;
|
||||
МассивТэгов.Добавить("<метка>");
|
||||
|
||||
СтруктураТовара.Вставить("tags", МассивТэгов);
|
||||
СтруктураТовара.Вставить("type", "<особый тип товара>");
|
||||
СтруктураТовара.Вставить("vendor", "<название бренда или производителя>");
|
||||
СтруктураТовара.Вставить("vendorCode", "<артикул товара от производителя>");
|
||||
|
||||
МассивВидео = Новый Массив;
|
||||
МассивВидео.Добавить("<ссылка на видео>");
|
||||
|
||||
СтруктураТовара.Вставить("videos", МассивВидео);
|
||||
СтруктураТовара.Вставить("weightDimensions", "<габариты и вес товара>");
|
||||
|
||||
Если Пустая Тогда
|
||||
СтруктураТовара = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураТовара);
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат СтруктураТовара;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
|
||||
Заголовки = Новый Соответствие;
|
||||
Заголовки.Вставить("Api-Key", Токен);
|
||||
Возврат Заголовки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -18,6 +18,7 @@
|
||||
<module name="OPI_VKTeams" file="core/Modules/OPI_VKTeams.os"/>
|
||||
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
|
||||
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
|
||||
<module name="OPI_YandexMarket" file="core/Modules/OPI_YandexMarket.os"/>
|
||||
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
|
||||
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
|
||||
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
|
||||
|
@ -2068,6 +2068,36 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура ЯМаркет_КабинетыИМагазины() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Token" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Campaign", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Business", ПараметрыТеста);
|
||||
|
||||
YandexMarket_ПолучитьСписокМагазинов(ПараметрыТеста);
|
||||
YandexMarket_ПолучитьМагазин(ПараметрыТеста);
|
||||
YandexMarket_ПолучитьНастройкиКабинета(ПараметрыТеста);
|
||||
YandexMarket_ПолучитьНастройкиМагазина(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЯМаркет_РаботаСТоварами() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Token" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Business", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста);
|
||||
|
||||
YandexMarket_ДобавитьОбновитьТовары(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -13232,7 +13262,7 @@
|
||||
// OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат);
|
||||
|
||||
// IDЗадания = Результат["result"]["task_id"];
|
||||
|
||||
|
||||
IDЗадания = 1;
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_CodesTaskID", IDЗадания);
|
||||
ПараметрыФункции.Вставить("Ozon_CodesTaskID", IDЗадания);
|
||||
@ -14309,6 +14339,140 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура YandexMarket_ПолучитьСписокМагазинов(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьСписокМагазинов(Токен);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМагазинов", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетМагазины(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ПолучитьМагазин(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьМагазин(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ПолучитьНастройкиКабинета(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDКабинета = ПараметрыФункции["YMarket_Business"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиКабинета(Токен, IDКабинета);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетКабинет(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ПолучитьНастройкиМагазина(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиМагазина(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкиМагазина", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ДобавитьОбновитьТовары(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDКабинета = ПараметрыФункции["YMarket_Business"];
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
Видео = ПараметрыФункции["Video"];
|
||||
|
||||
СтруктураОбновления = Новый Структура;
|
||||
|
||||
СтруктураТовара = Новый Структура;
|
||||
СтруктураТовара.Вставить("offerId" , "11111");
|
||||
СтруктураТовара.Вставить("name" , "Ударная дрель Makita HP1630, 710 Вт");
|
||||
СтруктураТовара.Вставить("marketCategoryId", 15221861);
|
||||
СтруктураТовара.Вставить("category" , "Дрель");
|
||||
|
||||
МассивКартинок = Новый Массив;
|
||||
МассивКартинок.Добавить(Картинка);
|
||||
|
||||
СтруктураТовара.Вставить("pictures", МассивКартинок);
|
||||
|
||||
МассивВидео = Новый Массив;
|
||||
МассивВидео.Добавить(Видео);
|
||||
|
||||
СтруктураТовара.Вставить("videos", МассивВидео);
|
||||
СтруктураТовара.Вставить("vendor", "LEVENHUK");
|
||||
|
||||
МассивШтрихкодов = Новый Массив;
|
||||
МассивШтрихкодов.Добавить("46012300000000");
|
||||
|
||||
СтруктураТовара.Вставить("barcodes" , МассивШтрихкодов);
|
||||
СтруктураТовара.Вставить("description", "Описание");
|
||||
|
||||
МассивСтран = Новый Массив;
|
||||
МассивСтран.Добавить("Россия");
|
||||
|
||||
СтруктураТовара.Вставить("manufacturerCountries", МассивСтран);
|
||||
|
||||
СтруктураРазмеров = Новый Структура;
|
||||
СтруктураРазмеров.Вставить("length", 65.55);
|
||||
СтруктураРазмеров.Вставить("width" , 50.7);
|
||||
СтруктураРазмеров.Вставить("height", 20);
|
||||
СтруктураРазмеров.Вставить("weight", 1.001);
|
||||
|
||||
СтруктураТовара.Вставить("weightDimensions", СтруктураРазмеров);
|
||||
СтруктураТовара.Вставить("vendorCode" , "VNDR-0005A");
|
||||
|
||||
МассивТэгов = Новый Массив;
|
||||
МассивТэгов.Добавить("до 500 рублей");
|
||||
|
||||
СтруктураТовара.Вставить("tags", МассивТэгов);
|
||||
|
||||
СтруктураПериода = Новый Структура;
|
||||
СтруктураПериода.Вставить("timePeriod", 24);
|
||||
СтруктураПериода.Вставить("timeUnit" , "HOUR");
|
||||
СтруктураПериода.Вставить("comment" , "Комментарий");
|
||||
|
||||
СтруктураТовара.Вставить("shelfLife" , СтруктураПериода);
|
||||
СтруктураТовара.Вставить("lifeTime" , СтруктураПериода);
|
||||
СтруктураТовара.Вставить("guaranteePeriod" , СтруктураПериода);
|
||||
СтруктураТовара.Вставить("customsCommodityCode", 8517610008);
|
||||
СтруктураТовара.Вставить("type" , "DEFAULT");
|
||||
СтруктураТовара.Вставить("downloadable" , Ложь);
|
||||
СтруктураТовара.Вставить("adult" , Ложь);
|
||||
|
||||
СтруктураОбновления.Вставить("offer", СтруктураТовара);
|
||||
|
||||
Результат = OPI_YandexMarket.ДобавитьОбновитьТовары(Токен, IDКабинета, СтруктураОбновления);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьОбновитьТовары", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетОк(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -2064,6 +2064,24 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура CLI_ЯМаркет_КабинетыИМагазины() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Token" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Campaign", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Business", ПараметрыТеста);
|
||||
|
||||
CLI_YandexMarket_ПолучитьСписокМагазинов(ПараметрыТеста);
|
||||
CLI_YandexMarket_ПолучитьМагазин(ПараметрыТеста);
|
||||
CLI_YandexMarket_ПолучитьНастройкиКабинета(ПараметрыТеста);
|
||||
CLI_YandexMarket_ПолучитьНастройкиМагазина(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -16280,6 +16298,65 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьСписокМагазинов(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьСписокМагазинов(Токен);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМагазинов", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетМагазины(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьМагазин(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьМагазин(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьНастройкиКабинета(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDКабинета = ПараметрыФункции["YMarket_Business"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиКабинета(Токен, IDКабинета);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетКабинет(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьНастройкиМагазина(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиМагазина(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкиМагазина", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -66,6 +66,7 @@
|
||||
Разделы.Вставить("Ozon" , 5);
|
||||
Разделы.Вставить("Neocities" , 5);
|
||||
Разделы.Вставить("CDEK" , 5);
|
||||
Разделы.Вставить("YandexMarket" , 5);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@ -95,6 +96,7 @@
|
||||
Разделы.Вставить("Ozon" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Neocities" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("CDEK" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("YandexMarket" , СтандартныеЗависимости);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@ -120,6 +122,7 @@
|
||||
Озон = "Ozon";
|
||||
Неоситиз = "Neocities";
|
||||
Сдэк = "CDEK";
|
||||
ЯМаркет = "YandexMarket";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@ -246,6 +249,8 @@
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_ОбщиеМетоды" , "Общие методы" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаказами" , "Работа с заказами" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера", "Работа с заявками курьера" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "ЯМаркет_КабинетыИМагазины" , "Кабинеты и магазины" , ЯМаркет);
|
||||
НовыйТест(ТаблицаТестов, "ЯМаркет_РаботаСТоварами" , "Работа с товарами" , ЯМаркет);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
@ -1907,6 +1912,33 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетМагазины(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["campaigns"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["pager"]).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетМагазин(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["campaign"]).ИмеетТип("Соответствие");
|
||||
ОжидаетЧто(Результат["campaign"]["id"]).Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетКабинет(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["result"]["settings"]).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетОк(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["status"]).Равно("OK");
|
||||
ОжидаетЧто(Результат["results"]).Равно(Неопределено);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -1943,9 +1975,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
323
src/ru/OPI/src/CommonModules/OPI_YandexMarket/Module.bsl
Normal file
323
src/ru/OPI/src/CommonModules/OPI_YandexMarket/Module.bsl
Normal file
@ -0,0 +1,323 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_YandexMarket.os
|
||||
// Lib: Yandex Market
|
||||
// CLI: yamarket
|
||||
|
||||
// MIT License
|
||||
|
||||
// Copyright (c) 2023 Anton Tsitavets
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
// BSLLS:Typo-off
|
||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
// BSLLS:NumberOfOptionalParams-off
|
||||
// BSLLS:UsingServiceTag-off
|
||||
// BSLLS:LineLength-off
|
||||
|
||||
//@skip-check module-structure-top-region
|
||||
//@skip-check module-structure-method-in-regions
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check method-too-many-params
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
// #Использовать "../../tools"
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область КабинетыИМагазины
|
||||
|
||||
// Получить список магазинов
|
||||
// Получает список магазинов в кабинете по токену
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// Страница - Число - Номер страницы выдачи списка - page
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьСписокМагазинов(Знач Токен, Знач Страница = 1) Экспорт
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/campaigns";
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
РазмерСтраницы = 100;
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("page" , Страница , "Число", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("pageSize", РазмерСтраницы, "Число", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить магазин
|
||||
// Получает информацию о магазине (кампании) по ID
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьМагазин(Знач Токен, Знач IDМагазина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/campaigns/" + IDМагазина;
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки кабинета
|
||||
// Получает значения настроек кабинета по ID
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDКабинета - Строка, Число - ID кабинета - business
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьНастройкиКабинета(Знач Токен, Знач IDКабинета) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/businesses/%1/settings";
|
||||
URL = СтрШаблон(URL, IDКабинета);
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки магазина
|
||||
// Получает настройки магазина по ID
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ПолучитьНастройкиМагазина(Знач Токен, Знач IDМагазина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/campaigns/%1/settings";
|
||||
URL = СтрШаблон(URL, IDМагазина);
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСТоварами
|
||||
|
||||
// Добавить обновить товары
|
||||
// Добавляет или обновляет информацию о товарах в каталоге
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings)
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен авторизации (Api-Key) - token
|
||||
// IDКабинета - Строка, Число - ID кабинета - business
|
||||
// МассивТоваров - Структура, Массив Из Структура - Массив описаний товаров - offers
|
||||
// СвоиИзображения - Булево - Признак использования только своих изображений товаров - pmedia
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
|
||||
Функция ДобавитьОбновитьТовары(Знач Токен, Знач IDКабинета, Знач МассивТоваров, Знач СвоиИзображения = Ложь) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
|
||||
|
||||
URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings/update";
|
||||
URL = СтрШаблон(URL, IDКабинета);
|
||||
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("offerMappings" , МассивТоваров , "Массив", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("onlyPartnerMediaContent", СвоиИзображения, "Булево", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру товара
|
||||
// Получает структуру стандартных полей товара
|
||||
//
|
||||
// Примечание:
|
||||
// Описание в документации API: [UpdateOfferDTO](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings#updateofferdto)
|
||||
//
|
||||
// Параметры:
|
||||
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Структура полей товара
|
||||
Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
|
||||
|
||||
СтруктураТовара = Новый Структура;
|
||||
СтруктураТовара.Вставить("offerId", "<идентификатор товара в вашей системе>");
|
||||
|
||||
СтруктураРасходов = Новый Структура;
|
||||
СтруктураРасходов.Вставить("currencyId" , "<код валюты>");
|
||||
СтруктураРасходов.Вставить("value" , "<доп. расходы>");
|
||||
|
||||
СтруктураТовара.Вставить("additionalExpenses", СтруктураРасходов);
|
||||
СтруктураТовара.Вставить("adult" , "<параметр включает для товара пометку 18+>");
|
||||
|
||||
СтруктураВозраста = Новый Структура;
|
||||
СтруктураВозраста.Вставить("ageUnit", "<единица измерения: YEAR, MONTH>");
|
||||
СтруктураВозраста.Вставить("value" , "<возрастное ограничение>");
|
||||
|
||||
СтруктураТовара.Вставить("age", СтруктураВозраста);
|
||||
|
||||
МассивШтрихкодов = Новый Массив;
|
||||
МассивШтрихкодов.Добавить("<штрихкод>");
|
||||
|
||||
СтруктураТовара.Вставить("barcodes", МассивШтрихкодов);
|
||||
|
||||
СтруктураБазовойЦены = Новый Структура;
|
||||
СтруктураБазовойЦены.Вставить("currencyId" , "<код валюты>");
|
||||
СтруктураБазовойЦены.Вставить("value" , "<цена>");
|
||||
СтруктураБазовойЦены.Вставить("discountBase", "<цена до скидки>");
|
||||
|
||||
СтруктураТовара.Вставить("basicPrice", СтруктураБазовойЦены);
|
||||
СтруктураТовара.Вставить("boxCount", "<количество грузовых мест>");
|
||||
СтруктураТовара.Вставить("category", "<категория товара в вашем магазине>");
|
||||
|
||||
МассивСертификатов = Новый Массив;
|
||||
МассивСертификатов.Добавить("<номер документа на товар>");
|
||||
|
||||
СтруктураТовара.Вставить("certificates", МассивСертификатов);
|
||||
|
||||
СтруктураЦеныДляСкидок = Новый Структура;
|
||||
СтруктураЦеныДляСкидок.Вставить("currencyId" , "<код валюты>");
|
||||
СтруктураЦеныДляСкидок.Вставить("value" , "<цена>");
|
||||
|
||||
СтруктураТовара.Вставить("cofinancePrice", СтруктураЦеныДляСкидок);
|
||||
|
||||
СтруктураСостояния = Новый Структура;
|
||||
СтруктураСостояния.Вставить("quality", "<внешний вид товара>");
|
||||
СтруктураСостояния.Вставить("reason" , "<описание дефектов>");
|
||||
СтруктураСостояния.Вставить("type" , "<тип уценки>");
|
||||
|
||||
СтруктураТовара.Вставить("condition", СтруктураСостояния);
|
||||
|
||||
// TODO: Доописать
|
||||
СтруктураТовара.Вставить("customsCommodityCode", "<код товара ТН ВЭД>");
|
||||
СтруктураТовара.Вставить("description", "<подробное описание товара>");
|
||||
СтруктураТовара.Вставить("downloadable", "<признак цифрового товара>");
|
||||
СтруктураТовара.Вставить("guaranteePeriod", "<гарантийный срок>");
|
||||
СтруктураТовара.Вставить("lifeTime", "<срок службы>");
|
||||
|
||||
МассивРуководств = Новый Массив;
|
||||
МассивРуководств.Добавить("<руководство>");
|
||||
|
||||
СтруктураТовара.Вставить("manuals", МассивРуководств);
|
||||
|
||||
МассивСтран = Новый Массив;
|
||||
МассивСтран.Добавить("<страна производства>");
|
||||
|
||||
СтруктураТовара.Вставить("manufacturerCountries", МассивСтран);
|
||||
СтруктураТовара.Вставить("marketCategoryId", "<идентификатор категории на Маркете>");
|
||||
СтруктураТовара.Вставить("name", "<имя товара>");
|
||||
|
||||
МассивХарактеристик = Новый Массив;
|
||||
МассивХарактеристик.Добавить("<характеристика>");
|
||||
|
||||
СтруктураТовара.Вставить("parameterValues", МассивХарактеристик);
|
||||
|
||||
МассивКартинок = Новый Массив;
|
||||
МассивКартинок.Добавить("<ссылка на картинку товара>");
|
||||
|
||||
СтруктураТовара.Вставить("pictures", МассивКартинок);
|
||||
СтруктураТовара.Вставить("purchasePrice", "<себестоимость>");
|
||||
СтруктураТовара.Вставить("shelfLife", "<срок годности>");
|
||||
|
||||
МассивТэгов = Новый Массив;
|
||||
МассивТэгов.Добавить("<метка>");
|
||||
|
||||
СтруктураТовара.Вставить("tags", МассивТэгов);
|
||||
СтруктураТовара.Вставить("type", "<особый тип товара>");
|
||||
СтруктураТовара.Вставить("vendor", "<название бренда или производителя>");
|
||||
СтруктураТовара.Вставить("vendorCode", "<артикул товара от производителя>");
|
||||
|
||||
МассивВидео = Новый Массив;
|
||||
МассивВидео.Добавить("<ссылка на видео>");
|
||||
|
||||
СтруктураТовара.Вставить("videos", МассивВидео);
|
||||
СтруктураТовара.Вставить("weightDimensions", "<габариты и вес товара>");
|
||||
|
||||
Если Пустая Тогда
|
||||
СтруктураТовара = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураТовара);
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат СтруктураТовара;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
|
||||
Заголовки = Новый Соответствие;
|
||||
Заголовки.Вставить("Api-Key", Токен);
|
||||
Возврат Заголовки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7c183b97-38f5-4fe6-a19f-c5af2ab85875">
|
||||
<name>OPI_YandexMarket</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Yandex Market (ОПИ)</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -66,6 +66,7 @@
|
||||
Разделы.Вставить("Ozon" , 5);
|
||||
Разделы.Вставить("Neocities" , 5);
|
||||
Разделы.Вставить("CDEK" , 5);
|
||||
Разделы.Вставить("YandexMarket" , 5);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@ -95,6 +96,7 @@
|
||||
Разделы.Вставить("Ozon" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Neocities" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("CDEK" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("YandexMarket" , СтандартныеЗависимости);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@ -120,6 +122,7 @@
|
||||
Озон = "Ozon";
|
||||
Неоситиз = "Neocities";
|
||||
Сдэк = "CDEK";
|
||||
ЯМаркет = "YandexMarket";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@ -246,6 +249,8 @@
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_ОбщиеМетоды" , "Общие методы" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаказами" , "Работа с заказами" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера", "Работа с заявками курьера" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "ЯМаркет_КабинетыИМагазины" , "Кабинеты и магазины" , ЯМаркет);
|
||||
НовыйТест(ТаблицаТестов, "ЯМаркет_РаботаСТоварами" , "Работа с товарами" , ЯМаркет);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
@ -1907,6 +1912,33 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетМагазины(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["campaigns"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["pager"]).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетМагазин(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["campaign"]).ИмеетТип("Соответствие");
|
||||
ОжидаетЧто(Результат["campaign"]["id"]).Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетКабинет(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["result"]["settings"]).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_ЯМаркетОк(Знач Результат) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["status"]).Равно("OK");
|
||||
ОжидаетЧто(Результат["results"]).Равно(Неопределено);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -2068,6 +2068,36 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура ЯМаркет_КабинетыИМагазины() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Token" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Campaign", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Business", ПараметрыТеста);
|
||||
|
||||
YandexMarket_ПолучитьСписокМагазинов(ПараметрыТеста);
|
||||
YandexMarket_ПолучитьМагазин(ПараметрыТеста);
|
||||
YandexMarket_ПолучитьНастройкиКабинета(ПараметрыТеста);
|
||||
YandexMarket_ПолучитьНастройкиМагазина(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЯМаркет_РаботаСТоварами() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Token" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Business", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста);
|
||||
|
||||
YandexMarket_ДобавитьОбновитьТовары(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -13232,7 +13262,7 @@
|
||||
// OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат);
|
||||
|
||||
// IDЗадания = Результат["result"]["task_id"];
|
||||
|
||||
|
||||
IDЗадания = 1;
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_CodesTaskID", IDЗадания);
|
||||
ПараметрыФункции.Вставить("Ozon_CodesTaskID", IDЗадания);
|
||||
@ -14309,6 +14339,140 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура YandexMarket_ПолучитьСписокМагазинов(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьСписокМагазинов(Токен);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМагазинов", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетМагазины(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ПолучитьМагазин(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьМагазин(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ПолучитьНастройкиКабинета(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDКабинета = ПараметрыФункции["YMarket_Business"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиКабинета(Токен, IDКабинета);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетКабинет(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ПолучитьНастройкиМагазина(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиМагазина(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкиМагазина", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура YandexMarket_ДобавитьОбновитьТовары(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDКабинета = ПараметрыФункции["YMarket_Business"];
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
Видео = ПараметрыФункции["Video"];
|
||||
|
||||
СтруктураОбновления = Новый Структура;
|
||||
|
||||
СтруктураТовара = Новый Структура;
|
||||
СтруктураТовара.Вставить("offerId" , "11111");
|
||||
СтруктураТовара.Вставить("name" , "Ударная дрель Makita HP1630, 710 Вт");
|
||||
СтруктураТовара.Вставить("marketCategoryId", 15221861);
|
||||
СтруктураТовара.Вставить("category" , "Дрель");
|
||||
|
||||
МассивКартинок = Новый Массив;
|
||||
МассивКартинок.Добавить(Картинка);
|
||||
|
||||
СтруктураТовара.Вставить("pictures", МассивКартинок);
|
||||
|
||||
МассивВидео = Новый Массив;
|
||||
МассивВидео.Добавить(Видео);
|
||||
|
||||
СтруктураТовара.Вставить("videos", МассивВидео);
|
||||
СтруктураТовара.Вставить("vendor", "LEVENHUK");
|
||||
|
||||
МассивШтрихкодов = Новый Массив;
|
||||
МассивШтрихкодов.Добавить("46012300000000");
|
||||
|
||||
СтруктураТовара.Вставить("barcodes" , МассивШтрихкодов);
|
||||
СтруктураТовара.Вставить("description", "Описание");
|
||||
|
||||
МассивСтран = Новый Массив;
|
||||
МассивСтран.Добавить("Россия");
|
||||
|
||||
СтруктураТовара.Вставить("manufacturerCountries", МассивСтран);
|
||||
|
||||
СтруктураРазмеров = Новый Структура;
|
||||
СтруктураРазмеров.Вставить("length", 65.55);
|
||||
СтруктураРазмеров.Вставить("width" , 50.7);
|
||||
СтруктураРазмеров.Вставить("height", 20);
|
||||
СтруктураРазмеров.Вставить("weight", 1.001);
|
||||
|
||||
СтруктураТовара.Вставить("weightDimensions", СтруктураРазмеров);
|
||||
СтруктураТовара.Вставить("vendorCode" , "VNDR-0005A");
|
||||
|
||||
МассивТэгов = Новый Массив;
|
||||
МассивТэгов.Добавить("до 500 рублей");
|
||||
|
||||
СтруктураТовара.Вставить("tags", МассивТэгов);
|
||||
|
||||
СтруктураПериода = Новый Структура;
|
||||
СтруктураПериода.Вставить("timePeriod", 24);
|
||||
СтруктураПериода.Вставить("timeUnit" , "HOUR");
|
||||
СтруктураПериода.Вставить("comment" , "Комментарий");
|
||||
|
||||
СтруктураТовара.Вставить("shelfLife" , СтруктураПериода);
|
||||
СтруктураТовара.Вставить("lifeTime" , СтруктураПериода);
|
||||
СтруктураТовара.Вставить("guaranteePeriod" , СтруктураПериода);
|
||||
СтруктураТовара.Вставить("customsCommodityCode", 8517610008);
|
||||
СтруктураТовара.Вставить("type" , "DEFAULT");
|
||||
СтруктураТовара.Вставить("downloadable" , Ложь);
|
||||
СтруктураТовара.Вставить("adult" , Ложь);
|
||||
|
||||
СтруктураОбновления.Вставить("offer", СтруктураТовара);
|
||||
|
||||
Результат = OPI_YandexMarket.ДобавитьОбновитьТовары(Токен, IDКабинета, СтруктураОбновления);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьОбновитьТовары", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетОк(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -2064,6 +2064,24 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура CLI_ЯМаркет_КабинетыИМагазины() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Token" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Campaign", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YMarket_Business", ПараметрыТеста);
|
||||
|
||||
CLI_YandexMarket_ПолучитьСписокМагазинов(ПараметрыТеста);
|
||||
CLI_YandexMarket_ПолучитьМагазин(ПараметрыТеста);
|
||||
CLI_YandexMarket_ПолучитьНастройкиКабинета(ПараметрыТеста);
|
||||
CLI_YandexMarket_ПолучитьНастройкиМагазина(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -16280,6 +16298,65 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexMarket
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьСписокМагазинов(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьСписокМагазинов(Токен);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМагазинов", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетМагазины(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьМагазин(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьМагазин(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьНастройкиКабинета(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDКабинета = ПараметрыФункции["YMarket_Business"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиКабинета(Токен, IDКабинета);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьМагазин", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_ЯМаркетКабинет(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура CLI_YandexMarket_ПолучитьНастройкиМагазина(ПараметрыФункции)
|
||||
|
||||
Токен = ПараметрыФункции["YMarket_Token"];
|
||||
IDМагазина = ПараметрыФункции["YMarket_Campaign"];
|
||||
|
||||
Результат = OPI_YandexMarket.ПолучитьНастройкиМагазина(Токен, IDМагазина);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкиМагазина", "YandexMarket");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -62,6 +62,7 @@
|
||||
<commonModules>CommonModule.OPI_Ozon</commonModules>
|
||||
<commonModules>CommonModule.OPI_Neocities</commonModules>
|
||||
<commonModules>CommonModule.OPI_CDEK</commonModules>
|
||||
<commonModules>CommonModule.OPI_YandexMarket</commonModules>
|
||||
<commonModules>CommonModule.OPI_Тесты</commonModules>
|
||||
<commonModules>CommonModule.OPI_ТестыCLI</commonModules>
|
||||
<commonModules>CommonModule.OPI_ПолучениеДанныхТестов</commonModules>
|
||||
|
Loading…
Reference in New Issue
Block a user