1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-28 05:46:35 +02:00

OZON: Добавление товаров

This commit is contained in:
Anton 2024-08-21 22:07:46 +03:00
parent 6bf89d827e
commit dfa12dd7db
25 changed files with 6624 additions and 4589 deletions

View File

@ -0,0 +1,6 @@
{
"ClientID": "2128753",
"APIKey": "7cc90d26-33e4-499b...",
"Image1": "https://openintegrations.dev/test_data/picture.jpg",
"Image2": "https://openintegrations.dev/test_data/picture2.jpg"
}

View File

@ -0,0 +1,5 @@
{
"ClientID": "2128753",
"APIKey": "7cc90d26-33e4-499b...",
"TaskID": ""
}

View File

@ -0,0 +1,20 @@
 Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
// Video
OPI_Ozon.AddProductVideo(ItemStructure, Video, "viedo1");

View File

@ -0,0 +1,20 @@
 Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
// Videocover
OPI_Ozon.AddProductVideoCover(ItemStructure, Video);

View File

@ -0,0 +1,21 @@
 ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
CategoryAttribute1 = New Structure("dictionary_value_id,value", 971082156, "Speaker stand");
CategoryAttribute2 = New Structure("value", "Protective film set for X3 NFC. Dark cotton");
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 5076 , 0, CategoryAttribute1);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 9048 , 0, CategoryAttribute2);

View File

@ -0,0 +1,48 @@
 ClientID = "2128753";
APIKey = "7cc90d26-33e4-499b...";
Image1 = "https://openintegrations.dev/test_data/picture.jpg";
Image2 = "https://openintegrations.dev/test_data/picture2.jpg";
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ImageArray = New Array;
ImageArray.Add(Image1);
ImageArray.Add(Image2);
// Common fields
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
ItemStructure.Insert("images" , ImageArray);
// Video
OPI_Ozon.AddProductVideo(ItemStructure, Video, "viedo1");
// Attributes individualized for different categories
CategoryAttribute1 = New Structure("dictionary_value_id,value", 971082156, "Speaker stand");
CategoryAttribute2 = New Structure("dictionary_value_id,value", 5060050 , "Samsung");
CategoryAttribute3 = New Structure("dictionary_value_id,value", 61576 , "gray");
CategoryAttribute4 = New Structure("dictionary_value_id,value", 95911 , "Protective film set for X3 NFC. Dark cotton");
CategoryAttribute5 = New Structure("value", "Protective film set for X3 NFC. Dark cotton");
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 5076 , 0, CategoryAttribute1);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 85 , 0, CategoryAttribute2);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 10096, 0, CategoryAttribute3);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 8229 , 0, CategoryAttribute4);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 9048 , 0, CategoryAttribute5);
Result = OPI_Ozon.CreateUpdateProducts(ClientID, APIKey, ItemStructure);

View File

@ -0,0 +1,5 @@
 ClientID = "2128753";
APIKey = "7cc90d26-33e4-499b...";
TaskID = "";
Result = OPI_Ozon.GetProductCreationStatus(ClientID, APIKey, TaskID);

View File

@ -0,0 +1,5 @@
{
"IDКлиента": "2128753",
"КлючAPI": "7cc90d26-33e4-499b...",
"IDЗадачи": ""
}

View File

@ -0,0 +1,6 @@
{
"IDКлиента": "2128753",
"КлючAPI": "7cc90d26-33e4-499b...",
"Картинка1": "https://openintegrations.dev/test_data/picture.jpg",
"Картинка2": "https://openintegrations.dev/test_data/picture2.jpg"
}

View File

@ -0,0 +1,20 @@
 Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
// Видео
OPI_Ozon.ДобавитьВидеоТовара(СтруктураТовара, Видео, "viedo1");

View File

@ -0,0 +1,20 @@
 Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
// Видеообложка
OPI_Ozon.ДобавитьВидеообложкуТовара(СтруктураТовара, Видео);

View File

@ -0,0 +1,21 @@
 СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы");
АтрибутКатегории2 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок");
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 5076 , 0, АтрибутКатегории1);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории2);

View File

@ -0,0 +1,5 @@
 IDКлиента = "2128753";
КлючAPI = "7cc90d26-33e4-499b...";
IDЗадачи = "";
Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи);

View File

@ -0,0 +1,48 @@
 IDКлиента = "2128753";
КлючAPI = "7cc90d26-33e4-499b...";
Картинка1 = "https://openintegrations.dev/test_data/picture.jpg";
Картинка2 = "https://openintegrations.dev/test_data/picture2.jpg";
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
МассивКартинок = Новый Массив;
МассивКартинок.Добавить(Картинка1);
МассивКартинок.Добавить(Картинка2);
// Стандартные реквизиты
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
СтруктураТовара.Вставить("images" , МассивКартинок);
// Видео
OPI_Ozon.ДобавитьВидеоТовара(СтруктураТовара, Видео, "viedo1");
// Атрибуты, индивидуальные для разных категорий
АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы");
АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung");
АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "серый");
АтрибутКатегории4 = Новый Структура("dictionary_value_id,value", 95911 , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
АтрибутКатегории5 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок");
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 5076 , 0, АтрибутКатегории1);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 85 , 0, АтрибутКатегории2);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 10096, 0, АтрибутКатегории3);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 8229 , 0, АтрибутКатегории4);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории5);
Результат = OPI_Ozon.СоздатьОбновитьТовары(IDКлиента, КлючAPI, СтруктураТовара);

File diff suppressed because it is too large Load Diff

View File

@ -202,6 +202,63 @@ EndFunction
#Region UploadingAndUpdatingProducts
// Create update product
// Creates new products or updates existing products, based on data structures
//
// Note
// Methods of product structure formation: GetProductStructure(), AddProductVideo(), AddProductVideoCover()
// Method at API documentation: [post /v3/product/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsV3)
//
// Parameters:
// ClientID - String - Client identifier - clientid
// APIKey - String - API key - apikey
// ProductsArray - Array Of String - Array or one structure of product description fields - items
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from Ozon Seller API
Function CreateUpdateProducts(Val ClientID, Val APIKey, Val ProductsArray) Export
URL = "https://api-seller.ozon.ru/v3/product/import";
Headers = CreateRequestHeaders(ClientID, APIKey);
Parameters = New Structure;
OPI_Tools.AddField("items", ProductsArray, "Array", Parameters);
Response = OPI_Tools.Post(URL, Parameters, Headers);
Return Response;
EndFunction
// Get product creation status
// Gets the status of adding a new product by task ID
//
// Note
// Method at API documentation: [post /v1/product/import/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetImportProductsInfo)
//
// Parameters:
// ClientID - String - Client identifier - clientid
// APIKey - String - API key - apikey
// TaskID - String, Number - Add product task ID - taskid
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from Ozon Seller API
Function GetProductCreationStatus(Val ClientID, Val APIKey, Val TaskID) Export
URL = "https://api-seller.ozon.ru/v1/product/import/info";
Headers = CreateRequestHeaders(ClientID, APIKey);
Parameters = New Structure;
OPI_Tools.AddField("task_id", TaskID, "String", Parameters);
Response = OPI_Tools.Post(URL, Parameters, Headers);
Return Response;
EndFunction
// Get product structure
// Gets the structure of product standard fields
//
@ -213,7 +270,7 @@ EndFunction
// Clear - Boolean - True > structure with empty valuse, False > field descriptions at values - empty
//
// Returns:
// Structure of KeyAndValue - Fields structure
// Structure of KeyAndValue - Product fields structure
Function GetProductStructure(Val Clear = False) Export
OPI_TypeConversion.GetBoolean(Clear);
@ -247,6 +304,107 @@ Function GetProductStructure(Val Clear = False) Export
EndFunction
// Add product video
// Adds video to product attributes
//
// Note
// In 1C the method can be used as a procedure, without getting a return value. Return value is required for CLI version
//
// Parameters:
// ItemStructure - Structure Of String - The basic structure of the product fields. See GetProductStructure - item
// URL - String - URL of the video - url
// Name - String - Technical name of the video - title
//
// Returns:
// Structure of KeyAndValue - Structure of product fields with added video
Function AddProductVideo(ItemStructure, Val URL, Val Name) Export
OPI_TypeConversion.GetCollection(ItemStructure);
OPI_TypeConversion.GetLine(URL);
OPI_TypeConversion.GetLine(Name);
VideoObject = New Structure();
URLStructure = New Structure("value", URL);
NameStructure = New Structure("value", Name);
CompleteComplexAttribute(VideoObject, 21841, 100001, URLStructure);
CompleteComplexAttribute(VideoObject, 21837, 100001, NameStructure);
If Not ItemStructure.Property("complex_attributes") Then
ItemStructure.Insert("complex_attributes", New Array);
EndIf;
ItemStructure["complex_attributes"].Add(VideoObject);
//@skip-check constructor-function-return-section
Return ItemStructure;
EndFunction
// Add product video cover
// Adds a video cover to the product attributes
//
// Note
// In 1C the method can be used as a procedure, without getting a return value. Return value is required for CLI version
//
// Parameters:
// ItemStructure - Structure Of String - The basic structure of the product fields. See GetProductStructure - item
// URL - String - URL of the video cover - url
//
// Returns:
// Structure of KeyAndValue - Structure of product fields with added video
Function AddProductVideoCover(ItemStructure, Val URL) Export
OPI_TypeConversion.GetCollection(ItemStructure);
OPI_TypeConversion.GetLine(URL);
CoverObject = New Structure();
URLStructure = New Structure("dictionary_value_id,value", 0, URL);
CompleteComplexAttribute(CoverObject, 21845, 100002, URLStructure);
If Not ItemStructure.Property("complex_attributes") Then
ItemStructure.Insert("complex_attributes", New Array);
EndIf;
ItemStructure["complex_attributes"].Add(CoverObject);
//@skip-check constructor-function-return-section
Return ItemStructure;
EndFunction
// Complete the complex attribute
// Formats the value in attribute format and adds it to the <attributes> array of the collection
//
// Note
// In 1C the method can be used as a procedure, without getting a return value. Return value is required for CLI version
//
// Parameters:
// Collection - Structure Of String - Complex attribute structure or product structure - object
// AttributeID - String, Number - Attribute ID - attributeid
// ComplexID - String, Number - Complex attribute ID - complexid
// Values - Arbitrary - Value or array of values to add to <values> field - values
//
// Returns:
// Structure - A collection enhanced with a new attribute
Function CompleteComplexAttribute(Collection, Val AttributeID, Val ComplexID, Val Values) Export
OPI_TypeConversion.GetArray(Values);
AttributeStructure = New Structure("id,complex_id,values", AttributeID, ComplexID, Values);
If Not Collection.Property("attributes") Then
Collection.Insert("attributes", New Array);
EndIf;
Collection["attributes"].Add(AttributeStructure);
//@skip-check constructor-function-return-section
Return Collection;
EndFunction
#EndRegion
#EndRegion
@ -264,4 +422,6 @@ Function CreateRequestHeaders(Val ClientID, Val APIKey)
EndFunction
#EndRegion

View File

@ -3221,8 +3221,15 @@ Procedure OzonAPI_UploadingAndUpdatingProducts() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ClientID" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ApiKey" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters);
Ozon_GetProductStructure(TestParameters);
Ozon_CreateUpdateProducts(TestParameters);
Ozon_GetProductCreationStatus(TestParameters);
Ozon_AddProductVideo(TestParameters);
Ozon_AddProductVideoCover(TestParameters);
Ozon_CompleteComplexAttribute(TestParameters);
EndProcedure
@ -4044,6 +4051,18 @@ Procedure Check_OzonListOfAttributesValues(Val Result)
EndProcedure
Procedure Check_OzonUploadTask(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["result"]["task_id"]).Заполнено();
EndProcedure
Procedure Check_OzonNewProducts(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["result"]["items"]).ИмеетТип("Array");
EndProcedure
#EndRegion
#Region AtomicTests
@ -11338,6 +11357,182 @@ Procedure Ozon_GetProductStructure(FunctionParameters)
EndProcedure
Procedure Ozon_CreateUpdateProducts(FunctionParameters)
ClientID = FunctionParameters["Ozon_ClientID"];
APIKey = FunctionParameters["Ozon_ApiKey"];
Image1 = FunctionParameters["Picture"];
Image2 = FunctionParameters["Picture2"];
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ImageArray = New Array;
ImageArray.Add(Image1);
ImageArray.Add(Image2);
// Common fields
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
ItemStructure.Insert("images" , ImageArray);
// Video
OPI_Ozon.AddProductVideo(ItemStructure, Video, "viedo1");
// Attributes individualized for different categories
CategoryAttribute1 = New Structure("dictionary_value_id,value", 971082156, "Speaker stand");
CategoryAttribute2 = New Structure("dictionary_value_id,value", 5060050 , "Samsung");
CategoryAttribute3 = New Structure("dictionary_value_id,value", 61576 , "gray");
CategoryAttribute4 = New Structure("dictionary_value_id,value", 95911 , "Protective film set for X3 NFC. Dark cotton");
CategoryAttribute5 = New Structure("value", "Protective film set for X3 NFC. Dark cotton");
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 5076 , 0, CategoryAttribute1);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 85 , 0, CategoryAttribute2);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 10096, 0, CategoryAttribute3);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 8229 , 0, CategoryAttribute4);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 9048 , 0, CategoryAttribute5);
Result = OPI_Ozon.CreateUpdateProducts(ClientID, APIKey, ItemStructure);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetProductStructure", "Ozon");
Check_OzonUploadTask(Result);
TaskID = Result["result"]["task_id"];
OPI_TestDataRetrieval.WriteParameter("Ozon_TaskID", TaskID);
FunctionParameters.Insert("Ozon_TaskID", TaskID);
OPI_Tools.Pause(60);
EndProcedure
Procedure Ozon_AddProductVideo(FunctionParameters)
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
// Video
OPI_Ozon.AddProductVideo(ItemStructure, Video, "viedo1");
// END
OPI_TestDataRetrieval.WriteLog(ItemStructure, "AddProductVideo", "Ozon");
Check_Structure(ItemStructure);
EndProcedure
Procedure Ozon_AddProductVideoCover(FunctionParameters)
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
// Videocover
OPI_Ozon.AddProductVideoCover(ItemStructure, Video);
// END
OPI_TestDataRetrieval.WriteLog(ItemStructure, "AddProductVideoCover", "Ozon");
Check_Structure(ItemStructure);
EndProcedure
Procedure Ozon_CompleteComplexAttribute(FunctionParameters)
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
CategoryAttribute1 = New Structure("dictionary_value_id,value", 971082156, "Speaker stand");
CategoryAttribute2 = New Structure("value", "Protective film set for X3 NFC. Dark cotton");
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 5076 , 0, CategoryAttribute1);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 9048 , 0, CategoryAttribute2);
// END
OPI_TestDataRetrieval.WriteLog(ItemStructure, "CompleteComplexAttribute", "Ozon");
Check_Structure(ItemStructure);
EndProcedure
Procedure Ozon_GetProductCreationStatus(FunctionParameters)
ClientID = FunctionParameters["Ozon_ClientID"];
APIKey = FunctionParameters["Ozon_ApiKey"];
TaskID = FunctionParameters["Ozon_TaskID"];
Result = OPI_Ozon.GetProductCreationStatus(ClientID, APIKey, TaskID);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetProductCreationStatus", "Ozon");
Check_OzonNewProducts(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@ -202,6 +202,63 @@ EndFunction
#Region UploadingAndUpdatingProducts
// Create update product
// Creates new products or updates existing products, based on data structures
//
// Note
// Methods of product structure formation: GetProductStructure(), AddProductVideo(), AddProductVideoCover()
// Method at API documentation: [post /v3/product/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsV3)
//
// Parameters:
// ClientID - String - Client identifier - clientid
// APIKey - String - API key - apikey
// ProductsArray - Array Of String - Array or one structure of product description fields - items
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from Ozon Seller API
Function CreateUpdateProducts(Val ClientID, Val APIKey, Val ProductsArray) Export
URL = "https://api-seller.ozon.ru/v3/product/import";
Headers = CreateRequestHeaders(ClientID, APIKey);
Parameters = New Structure;
OPI_Tools.AddField("items", ProductsArray, "Array", Parameters);
Response = OPI_Tools.Post(URL, Parameters, Headers);
Return Response;
EndFunction
// Get product creation status
// Gets the status of adding a new product by task ID
//
// Note
// Method at API documentation: [post /v1/product/import/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetImportProductsInfo)
//
// Parameters:
// ClientID - String - Client identifier - clientid
// APIKey - String - API key - apikey
// TaskID - String, Number - Add product task ID - taskid
//
// Returns:
// Map Of KeyAndValue - Serialized JSON response from Ozon Seller API
Function GetProductCreationStatus(Val ClientID, Val APIKey, Val TaskID) Export
URL = "https://api-seller.ozon.ru/v1/product/import/info";
Headers = CreateRequestHeaders(ClientID, APIKey);
Parameters = New Structure;
OPI_Tools.AddField("task_id", TaskID, "String", Parameters);
Response = OPI_Tools.Post(URL, Parameters, Headers);
Return Response;
EndFunction
// Get product structure
// Gets the structure of product standard fields
//
@ -213,7 +270,7 @@ EndFunction
// Clear - Boolean - True > structure with empty valuse, False > field descriptions at values - empty
//
// Returns:
// Structure of KeyAndValue - Fields structure
// Structure of KeyAndValue - Product fields structure
Function GetProductStructure(Val Clear = False) Export
OPI_TypeConversion.GetBoolean(Clear);
@ -247,6 +304,107 @@ Function GetProductStructure(Val Clear = False) Export
EndFunction
// Add product video
// Adds video to product attributes
//
// Note
// In 1C the method can be used as a procedure, without getting a return value. Return value is required for CLI version
//
// Parameters:
// ItemStructure - Structure Of String - The basic structure of the product fields. See GetProductStructure - item
// URL - String - URL of the video - url
// Name - String - Technical name of the video - title
//
// Returns:
// Structure of KeyAndValue - Structure of product fields with added video
Function AddProductVideo(ItemStructure, Val URL, Val Name) Export
OPI_TypeConversion.GetCollection(ItemStructure);
OPI_TypeConversion.GetLine(URL);
OPI_TypeConversion.GetLine(Name);
VideoObject = New Structure();
URLStructure = New Structure("value", URL);
NameStructure = New Structure("value", Name);
CompleteComplexAttribute(VideoObject, 21841, 100001, URLStructure);
CompleteComplexAttribute(VideoObject, 21837, 100001, NameStructure);
If Not ItemStructure.Property("complex_attributes") Then
ItemStructure.Insert("complex_attributes", New Array);
EndIf;
ItemStructure["complex_attributes"].Add(VideoObject);
//@skip-check constructor-function-return-section
Return ItemStructure;
EndFunction
// Add product video cover
// Adds a video cover to the product attributes
//
// Note
// In 1C the method can be used as a procedure, without getting a return value. Return value is required for CLI version
//
// Parameters:
// ItemStructure - Structure Of String - The basic structure of the product fields. See GetProductStructure - item
// URL - String - URL of the video cover - url
//
// Returns:
// Structure of KeyAndValue - Structure of product fields with added video
Function AddProductVideoCover(ItemStructure, Val URL) Export
OPI_TypeConversion.GetCollection(ItemStructure);
OPI_TypeConversion.GetLine(URL);
CoverObject = New Structure();
URLStructure = New Structure("dictionary_value_id,value", 0, URL);
CompleteComplexAttribute(CoverObject, 21845, 100002, URLStructure);
If Not ItemStructure.Property("complex_attributes") Then
ItemStructure.Insert("complex_attributes", New Array);
EndIf;
ItemStructure["complex_attributes"].Add(CoverObject);
//@skip-check constructor-function-return-section
Return ItemStructure;
EndFunction
// Complete the complex attribute
// Formats the value in attribute format and adds it to the <attributes> array of the collection
//
// Note
// In 1C the method can be used as a procedure, without getting a return value. Return value is required for CLI version
//
// Parameters:
// Collection - Structure Of String - Complex attribute structure or product structure - object
// AttributeID - String, Number - Attribute ID - attributeid
// ComplexID - String, Number - Complex attribute ID - complexid
// Values - Arbitrary - Value or array of values to add to <values> field - values
//
// Returns:
// Structure - A collection enhanced with a new attribute
Function CompleteComplexAttribute(Collection, Val AttributeID, Val ComplexID, Val Values) Export
OPI_TypeConversion.GetArray(Values);
AttributeStructure = New Structure("id,complex_id,values", AttributeID, ComplexID, Values);
If Not Collection.Property("attributes") Then
Collection.Insert("attributes", New Array);
EndIf;
Collection["attributes"].Add(AttributeStructure);
//@skip-check constructor-function-return-section
Return Collection;
EndFunction
#EndRegion
#EndRegion
@ -264,4 +422,6 @@ Function CreateRequestHeaders(Val ClientID, Val APIKey)
EndFunction
#EndRegion

View File

@ -3221,8 +3221,15 @@ Procedure OzonAPI_UploadingAndUpdatingProducts() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ClientID" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ApiKey" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters);
Ozon_GetProductStructure(TestParameters);
Ozon_CreateUpdateProducts(TestParameters);
Ozon_GetProductCreationStatus(TestParameters);
Ozon_AddProductVideo(TestParameters);
Ozon_AddProductVideoCover(TestParameters);
Ozon_CompleteComplexAttribute(TestParameters);
EndProcedure
@ -4044,6 +4051,18 @@ Procedure Check_OzonListOfAttributesValues(Val Result)
EndProcedure
Procedure Check_OzonUploadTask(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["result"]["task_id"]).Заполнено();
EndProcedure
Procedure Check_OzonNewProducts(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result["result"]["items"]).ИмеетТип("Array");
EndProcedure
#EndRegion
#Region AtomicTests
@ -11338,6 +11357,182 @@ Procedure Ozon_GetProductStructure(FunctionParameters)
EndProcedure
Procedure Ozon_CreateUpdateProducts(FunctionParameters)
ClientID = FunctionParameters["Ozon_ClientID"];
APIKey = FunctionParameters["Ozon_ApiKey"];
Image1 = FunctionParameters["Picture"];
Image2 = FunctionParameters["Picture2"];
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ImageArray = New Array;
ImageArray.Add(Image1);
ImageArray.Add(Image2);
// Common fields
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
ItemStructure.Insert("images" , ImageArray);
// Video
OPI_Ozon.AddProductVideo(ItemStructure, Video, "viedo1");
// Attributes individualized for different categories
CategoryAttribute1 = New Structure("dictionary_value_id,value", 971082156, "Speaker stand");
CategoryAttribute2 = New Structure("dictionary_value_id,value", 5060050 , "Samsung");
CategoryAttribute3 = New Structure("dictionary_value_id,value", 61576 , "gray");
CategoryAttribute4 = New Structure("dictionary_value_id,value", 95911 , "Protective film set for X3 NFC. Dark cotton");
CategoryAttribute5 = New Structure("value", "Protective film set for X3 NFC. Dark cotton");
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 5076 , 0, CategoryAttribute1);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 85 , 0, CategoryAttribute2);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 10096, 0, CategoryAttribute3);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 8229 , 0, CategoryAttribute4);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 9048 , 0, CategoryAttribute5);
Result = OPI_Ozon.CreateUpdateProducts(ClientID, APIKey, ItemStructure);
// END
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "GetProductStructure", "Ozon");
Check_OzonUploadTask(Result);
TaskID = Result["result"]["task_id"];
OPI_TestDataRetrieval.WriteParameter("Ozon_TaskID", TaskID);
FunctionParameters.Insert("Ozon_TaskID", TaskID);
OPI_Tools.Pause(60);
EndProcedure
Procedure Ozon_AddProductVideo(FunctionParameters)
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
// Video
OPI_Ozon.AddProductVideo(ItemStructure, Video, "viedo1");
// END
// !OInt OPI_TestDataRetrieval.WriteLog(ItemStructure, "AddProductVideo", "Ozon");
Check_Structure(ItemStructure);
EndProcedure
Procedure Ozon_AddProductVideoCover(FunctionParameters)
Video = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
// Videocover
OPI_Ozon.AddProductVideoCover(ItemStructure, Video);
// END
// !OInt OPI_TestDataRetrieval.WriteLog(ItemStructure, "AddProductVideoCover", "Ozon");
Check_Structure(ItemStructure);
EndProcedure
Procedure Ozon_CompleteComplexAttribute(FunctionParameters)
ItemStructure = New Structure;
ItemStructure.Insert("description_category_id", 17028922);
ItemStructure.Insert("name" , "Protective film set for X3 NFC. Dark cotton");
ItemStructure.Insert("offer_id" , "143210608");
ItemStructure.Insert("barcode" , "112772873170");
ItemStructure.Insert("price" , "1000");
ItemStructure.Insert("old_price" , "1100");
ItemStructure.Insert("vat" , "0.1");
ItemStructure.Insert("height" , 250);
ItemStructure.Insert("width" , 150);
ItemStructure.Insert("depth" , 10);
ItemStructure.Insert("dimension_unit" , "mm");
ItemStructure.Insert("weight" , 100);
ItemStructure.Insert("weight_unit" , "g");
CategoryAttribute1 = New Structure("dictionary_value_id,value", 971082156, "Speaker stand");
CategoryAttribute2 = New Structure("value", "Protective film set for X3 NFC. Dark cotton");
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 5076 , 0, CategoryAttribute1);
OPI_Ozon.CompleteComplexAttribute(ItemStructure, 9048 , 0, CategoryAttribute2);
// END
// !OInt OPI_TestDataRetrieval.WriteLog(ItemStructure, "CompleteComplexAttribute", "Ozon");
Check_Structure(ItemStructure);
EndProcedure
Procedure Ozon_GetProductCreationStatus(FunctionParameters)
ClientID = FunctionParameters["Ozon_ClientID"];
APIKey = FunctionParameters["Ozon_ApiKey"];
TaskID = FunctionParameters["Ozon_TaskID"];
Result = OPI_Ozon.GetProductCreationStatus(ClientID, APIKey, TaskID);
// END
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "GetProductCreationStatus", "Ozon");
Check_OzonNewProducts(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@ -224,6 +224,68 @@
NewLine.Область = "Attributes and features";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CreateUpdateProducts";
NewLine.МетодПоиска = "CREATEUPDATEPRODUCTS";
NewLine.Параметр = "--clientid";
NewLine.Описание = "Client identifier";
NewLine.Область = "Uploading and updating products";
NewLine.ОписаниеМетода = "Creates new products or updates existing products, based on data structures";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CreateUpdateProducts";
NewLine.МетодПоиска = "CREATEUPDATEPRODUCTS";
NewLine.Параметр = "--apikey";
NewLine.Описание = "API key";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CreateUpdateProducts";
NewLine.МетодПоиска = "CREATEUPDATEPRODUCTS";
NewLine.Параметр = "--items";
NewLine.Описание = "Array or one structure of product description fields";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "GetProductCreationStatus";
NewLine.МетодПоиска = "GETPRODUCTCREATIONSTATUS";
NewLine.Параметр = "--clientid";
NewLine.Описание = "Client identifier";
NewLine.Область = "Uploading and updating products";
NewLine.ОписаниеМетода = "Gets the status of adding a new product by task ID";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "GetProductCreationStatus";
NewLine.МетодПоиска = "GETPRODUCTCREATIONSTATUS";
NewLine.Параметр = "--apikey";
NewLine.Описание = "API key";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "GetProductCreationStatus";
NewLine.МетодПоиска = "GETPRODUCTCREATIONSTATUS";
NewLine.Параметр = "--taskid";
NewLine.Описание = "Add product task ID";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
@ -234,6 +296,99 @@
NewLine.Область = "Uploading and updating products";
NewLine.ОписаниеМетода = "Gets the structure of product standard fields";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "AddProductVideo";
NewLine.МетодПоиска = "ADDPRODUCTVIDEO";
NewLine.Параметр = "--item";
NewLine.Описание = "The basic structure of the product fields. See GetProductStructure";
NewLine.Область = "Uploading and updating products";
NewLine.ОписаниеМетода = "Adds video to product attributes";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "AddProductVideo";
NewLine.МетодПоиска = "ADDPRODUCTVIDEO";
NewLine.Параметр = "--url";
NewLine.Описание = "URL of the video";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "AddProductVideo";
NewLine.МетодПоиска = "ADDPRODUCTVIDEO";
NewLine.Параметр = "--title";
NewLine.Описание = "Technical name of the video";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "AddProductVideoCover";
NewLine.МетодПоиска = "ADDPRODUCTVIDEOCOVER";
NewLine.Параметр = "--item";
NewLine.Описание = "The basic structure of the product fields. See GetProductStructure";
NewLine.Область = "Uploading and updating products";
NewLine.ОписаниеМетода = "Adds a video cover to the product attributes";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "AddProductVideoCover";
NewLine.МетодПоиска = "ADDPRODUCTVIDEOCOVER";
NewLine.Параметр = "--url";
NewLine.Описание = "URL of the video cover";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CompleteComplexAttribute";
NewLine.МетодПоиска = "COMPLETECOMPLEXATTRIBUTE";
NewLine.Параметр = "--object";
NewLine.Описание = "Complex attribute structure or product structure";
NewLine.Область = "Uploading and updating products";
NewLine.ОписаниеМетода = "Formats the value in attribute format and adds it to the <attributes> array of the collection";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CompleteComplexAttribute";
NewLine.МетодПоиска = "COMPLETECOMPLEXATTRIBUTE";
NewLine.Параметр = "--attributeid";
NewLine.Описание = "Attribute ID";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CompleteComplexAttribute";
NewLine.МетодПоиска = "COMPLETECOMPLEXATTRIBUTE";
NewLine.Параметр = "--complexid";
NewLine.Описание = "Complex attribute ID";
NewLine.Область = "Uploading and updating products";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "ozon";
NewLine.Модуль = "OPI_Ozon";
NewLine.Метод = "CompleteComplexAttribute";
NewLine.МетодПоиска = "COMPLETECOMPLEXATTRIBUTE";
NewLine.Параметр = "--values";
NewLine.Описание = "Value or array of values to add to <values> field";
NewLine.Область = "Uploading and updating products";
Return CompositionTable;
EndFunction

View File

@ -202,6 +202,63 @@
#Область ЗагрузкаИОбновлениеТоваров
// Создать обновить товары
// Создает новые или обновляет существующие товары по структурам полей
//
// Примечание:
// Методы формирования структуры товара: ПолучитьСтруктуруТовара(), ДобавитьВидеоТовара(), ДобавитьВидеообложкуТовара()
// Метод в документации API: [post /v3/product/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsV3)
//
// Параметры:
// IDКлиента - Строка - Идентификатор клиента - clientid
// КлючAPI - Строка - API ключ - apikey
// МассивТоваров - Массив Из Строка - Массив или одна структура полей описания товара - items
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
Функция СоздатьОбновитьТовары(Знач IDКлиента, Знач КлючAPI, Знач МассивТоваров) Экспорт
URL = "https://api-seller.ozon.ru/v3/product/import";
Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("items", МассивТоваров, "Массив", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить статус добавления товара
// Получает статус добавления нового товара по ID задачи
//
// Примечание:
// Метод в документации API: [post /v1/product/import/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetImportProductsInfo)
//
// Параметры:
// IDКлиента - Строка - Идентификатор клиента - clientid
// КлючAPI - Строка - API ключ - apikey
// IDЗадачи - Строка, Число - ID задачи добавления товара - taskid
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
Функция ПолучитьСтатусДобавленияТовара(Знач IDКлиента, Знач КлючAPI, Знач IDЗадачи) Экспорт
URL = "https://api-seller.ozon.ru/v1/product/import/info";
Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("task_id", IDЗадачи, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить структуру товара
// Получает структуру стандартных полей товара
//
@ -213,7 +270,7 @@
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
// Структура Из КлючИЗначение - Структура полей товара
Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
@ -247,6 +304,107 @@
КонецФункции
// Добавить видео товара
// Добавляет видео к атрибутам товара
//
// Примечание:
// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии
//
// Параметры:
// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item
// URL - Строка - URL к видео для добавления - url
// Наименование - Строка - Техническое наименование видео - title
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей товара с добавленным видео
Функция ДобавитьВидеоТовара(СтруктураТовара, Знач URL, Знач Наименование) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара);
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
ОбъектВидео = Новый Структура();
СтруктураURL = Новый Структура("value", URL);
СтруктураНаименования = Новый Структура("value", Наименование);
ДополнитьКомплексныйАтрибут(ОбъектВидео, 21841, 100001, СтруктураURL);
ДополнитьКомплексныйАтрибут(ОбъектВидео, 21837, 100001, СтруктураНаименования);
Если Не СтруктураТовара.Свойство("complex_attributes") Тогда
СтруктураТовара.Вставить("complex_attributes", Новый Массив);
КонецЕсли;
СтруктураТовара["complex_attributes"].Добавить(ОбъектВидео);
//@skip-check constructor-function-return-section
Возврат СтруктураТовара;
КонецФункции
// Добавить видеообложку товара
// Добавляет видеообложку к атрибутам товара
//
// Примечание:
// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии
//
// Параметры:
// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item
// URL - Строка - URL к видеообложке для добавления - url
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей товара с добавленным видео
Функция ДобавитьВидеообложкуТовара(СтруктураТовара, Знач URL) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара);
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
ОбъектОбложка = Новый Структура();
СтруктураURL = Новый Структура("dictionary_value_id,value", 0, URL);
ДополнитьКомплексныйАтрибут(ОбъектОбложка, 21845, 100002, СтруктураURL);
Если Не СтруктураТовара.Свойство("complex_attributes") Тогда
СтруктураТовара.Вставить("complex_attributes", Новый Массив);
КонецЕсли;
СтруктураТовара["complex_attributes"].Добавить(ОбъектОбложка);
//@skip-check constructor-function-return-section
Возврат СтруктураТовара;
КонецФункции
// Дополнить комплексный атрибут
// Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции
//
// Примечание:
// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии
//
// Параметры:
// Коллекция - Структура Из Строка - Структура комплексного атрибута или структура товара - object
// IDАтрибута - Строка, Число - ID атрибута - attributeid
// КомплексныйID - Строка, Число - Комплексный ID - complexid
// Значения - Произвольный - Значение или массив значений для добавления в values - values
//
// Возвращаемое значение:
// Структура - Коллекция, дополненная атрибутом
Функция ДополнитьКомплексныйАтрибут(Коллекция, Знач IDАтрибута, Знач КомплексныйID, Знач Значения) Экспорт
OPI_ПреобразованиеТипов.ПолучитьМассив(Значения);
СтруктураАтрибута = Новый Структура("id,complex_id,values", IDАтрибута, КомплексныйID, Значения);
Если Не Коллекция.Свойство("attributes") Тогда
Коллекция.Вставить("attributes", Новый Массив);
КонецЕсли;
Коллекция["attributes"].Добавить(СтруктураАтрибута);
//@skip-check constructor-function-return-section
Возврат Коллекция;
КонецФункции
#КонецОбласти
#КонецОбласти
@ -264,4 +422,6 @@
КонецФункции
#КонецОбласти

View File

@ -3221,8 +3221,15 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста);
Ozon_ПолучитьСтруктуруТовара(ПараметрыТеста);
Ozon_СоздатьОбновитьТовары(ПараметрыТеста);
Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыТеста);
Ozon_ДобавитьВидеоТовара(ПараметрыТеста);
Ozon_ДобавитьВидеообложкуТовара(ПараметрыТеста);
Ozon_ДополнитьКомплексныйАтрибут(ПараметрыТеста);
КонецПроцедуры
@ -4044,6 +4051,18 @@
КонецПроцедуры
Процедура Проверка_ОзонЗаданиеЗагрузки(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["task_id"]).Заполнено();
КонецПроцедуры
Процедура Проверка_ОзонНовыеТовары(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["items"]).ИмеетТип("Массив");
КонецПроцедуры
#КонецОбласти
#Область АтомарныеТесты
@ -11338,6 +11357,182 @@
КонецПроцедуры
Процедура Ozon_СоздатьОбновитьТовары(ПараметрыФункции)
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
Картинка1 = ПараметрыФункции["Picture"];
Картинка2 = ПараметрыФункции["Picture2"];
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
МассивКартинок = Новый Массив;
МассивКартинок.Добавить(Картинка1);
МассивКартинок.Добавить(Картинка2);
// Стандартные реквизиты
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
СтруктураТовара.Вставить("images" , МассивКартинок);
// Видео
OPI_Ozon.ДобавитьВидеоТовара(СтруктураТовара, Видео, "viedo1");
// Атрибуты, индивидуальные для разных категорий
АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы");
АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung");
АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "серый");
АтрибутКатегории4 = Новый Структура("dictionary_value_id,value", 95911 , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
АтрибутКатегории5 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок");
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 5076 , 0, АтрибутКатегории1);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 85 , 0, АтрибутКатегории2);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 10096, 0, АтрибутКатегории3);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 8229 , 0, АтрибутКатегории4);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории5);
Результат = OPI_Ozon.СоздатьОбновитьТовары(IDКлиента, КлючAPI, СтруктураТовара);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруТовара", "Ozon");
Проверка_ОзонЗаданиеЗагрузки(Результат);
IDЗадания = Результат["result"]["task_id"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_TaskID", IDЗадания);
ПараметрыФункции.Вставить("Ozon_TaskID", IDЗадания);
OPI_Инструменты.Пауза(60);
КонецПроцедуры
Процедура Ozon_ДобавитьВидеоТовара(ПараметрыФункции)
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
// Видео
OPI_Ozon.ДобавитьВидеоТовара(СтруктураТовара, Видео, "viedo1");
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(СтруктураТовара, "ДобавитьВидеоТовара", "Ozon");
Проверка_Структура(СтруктураТовара);
КонецПроцедуры
Процедура Ozon_ДобавитьВидеообложкуТовара(ПараметрыФункции)
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
// Видеообложка
OPI_Ozon.ДобавитьВидеообложкуТовара(СтруктураТовара, Видео);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(СтруктураТовара, "ДобавитьВидеообложкуТовара", "Ozon");
Проверка_Структура(СтруктураТовара);
КонецПроцедуры
Процедура Ozon_ДополнитьКомплексныйАтрибут(ПараметрыФункции)
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы");
АтрибутКатегории2 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок");
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 5076 , 0, АтрибутКатегории1);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории2);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(СтруктураТовара, "ДополнитьКомплексныйАтрибут", "Ozon");
Проверка_Структура(СтруктураТовара);
КонецПроцедуры
Процедура Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыФункции)
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
IDЗадачи = ПараметрыФункции["Ozon_TaskID"];
Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтатусДобавленияТовара", "Ozon");
Проверка_ОзонНовыеТовары(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -202,6 +202,63 @@
#Область ЗагрузкаИОбновлениеТоваров
// Создать обновить товары
// Создает новые или обновляет существующие товары по структурам полей
//
// Примечание:
// Методы формирования структуры товара: ПолучитьСтруктуруТовара(), ДобавитьВидеоТовара(), ДобавитьВидеообложкуТовара()
// Метод в документации API: [post /v3/product/import](@docs.ozon.ru/api/seller/#operation/ProductAPI_ImportProductsV3)
//
// Параметры:
// IDКлиента - Строка - Идентификатор клиента - clientid
// КлючAPI - Строка - API ключ - apikey
// МассивТоваров - Массив Из Строка - Массив или одна структура полей описания товара - items
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
Функция СоздатьОбновитьТовары(Знач IDКлиента, Знач КлючAPI, Знач МассивТоваров) Экспорт
URL = "https://api-seller.ozon.ru/v3/product/import";
Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("items", МассивТоваров, "Массив", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить статус добавления товара
// Получает статус добавления нового товара по ID задачи
//
// Примечание:
// Метод в документации API: [post /v1/product/import/info](@docs.ozon.ru/api/seller/#operation/ProductAPI_GetImportProductsInfo)
//
// Параметры:
// IDКлиента - Строка - Идентификатор клиента - clientid
// КлючAPI - Строка - API ключ - apikey
// IDЗадачи - Строка, Число - ID задачи добавления товара - taskid
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
Функция ПолучитьСтатусДобавленияТовара(Знач IDКлиента, Знач КлючAPI, Знач IDЗадачи) Экспорт
URL = "https://api-seller.ozon.ru/v1/product/import/info";
Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("task_id", IDЗадачи, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить структуру товара
// Получает структуру стандартных полей товара
//
@ -213,7 +270,7 @@
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
// Структура Из КлючИЗначение - Структура полей товара
Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
@ -247,6 +304,107 @@
КонецФункции
// Добавить видео товара
// Добавляет видео к атрибутам товара
//
// Примечание:
// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии
//
// Параметры:
// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item
// URL - Строка - URL к видео для добавления - url
// Наименование - Строка - Техническое наименование видео - title
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей товара с добавленным видео
Функция ДобавитьВидеоТовара(СтруктураТовара, Знач URL, Знач Наименование) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара);
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
ОбъектВидео = Новый Структура();
СтруктураURL = Новый Структура("value", URL);
СтруктураНаименования = Новый Структура("value", Наименование);
ДополнитьКомплексныйАтрибут(ОбъектВидео, 21841, 100001, СтруктураURL);
ДополнитьКомплексныйАтрибут(ОбъектВидео, 21837, 100001, СтруктураНаименования);
Если Не СтруктураТовара.Свойство("complex_attributes") Тогда
СтруктураТовара.Вставить("complex_attributes", Новый Массив);
КонецЕсли;
СтруктураТовара["complex_attributes"].Добавить(ОбъектВидео);
//@skip-check constructor-function-return-section
Возврат СтруктураТовара;
КонецФункции
// Добавить видеообложку товара
// Добавляет видеообложку к атрибутам товара
//
// Примечание:
// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии
//
// Параметры:
// СтруктураТовара - Структура Из Строка - Основная структура полей товара. См. ПолучитьСтруктуруТовара - item
// URL - Строка - URL к видеообложке для добавления - url
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей товара с добавленным видео
Функция ДобавитьВидеообложкуТовара(СтруктураТовара, Знач URL) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураТовара);
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
ОбъектОбложка = Новый Структура();
СтруктураURL = Новый Структура("dictionary_value_id,value", 0, URL);
ДополнитьКомплексныйАтрибут(ОбъектОбложка, 21845, 100002, СтруктураURL);
Если Не СтруктураТовара.Свойство("complex_attributes") Тогда
СтруктураТовара.Вставить("complex_attributes", Новый Массив);
КонецЕсли;
СтруктураТовара["complex_attributes"].Добавить(ОбъектОбложка);
//@skip-check constructor-function-return-section
Возврат СтруктураТовара;
КонецФункции
// Дополнить комплексный атрибут
// Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции
//
// Примечание:
// В 1С метод может использоваться как процедура, без получения возвращаемого значения. Возвращаемое значение необходимо для CLI версии
//
// Параметры:
// Коллекция - Структура Из Строка - Структура комплексного атрибута или структура товара - object
// IDАтрибута - Строка, Число - ID атрибута - attributeid
// КомплексныйID - Строка, Число - Комплексный ID - complexid
// Значения - Произвольный - Значение или массив значений для добавления в values - values
//
// Возвращаемое значение:
// Структура - Коллекция, дополненная атрибутом
Функция ДополнитьКомплексныйАтрибут(Коллекция, Знач IDАтрибута, Знач КомплексныйID, Знач Значения) Экспорт
OPI_ПреобразованиеТипов.ПолучитьМассив(Значения);
СтруктураАтрибута = Новый Структура("id,complex_id,values", IDАтрибута, КомплексныйID, Значения);
Если Не Коллекция.Свойство("attributes") Тогда
Коллекция.Вставить("attributes", Новый Массив);
КонецЕсли;
Коллекция["attributes"].Добавить(СтруктураАтрибута);
//@skip-check constructor-function-return-section
Возврат Коллекция;
КонецФункции
#КонецОбласти
#КонецОбласти
@ -264,4 +422,6 @@
КонецФункции
#КонецОбласти

View File

@ -3221,8 +3221,15 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста);
Ozon_ПолучитьСтруктуруТовара(ПараметрыТеста);
Ozon_СоздатьОбновитьТовары(ПараметрыТеста);
Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыТеста);
Ozon_ДобавитьВидеоТовара(ПараметрыТеста);
Ozon_ДобавитьВидеообложкуТовара(ПараметрыТеста);
Ozon_ДополнитьКомплексныйАтрибут(ПараметрыТеста);
КонецПроцедуры
@ -4044,6 +4051,18 @@
КонецПроцедуры
Процедура Проверка_ОзонЗаданиеЗагрузки(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["task_id"]).Заполнено();
КонецПроцедуры
Процедура Проверка_ОзонНовыеТовары(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["items"]).ИмеетТип("Массив");
КонецПроцедуры
#КонецОбласти
#Область АтомарныеТесты
@ -11338,6 +11357,182 @@
КонецПроцедуры
Процедура Ozon_СоздатьОбновитьТовары(ПараметрыФункции)
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
Картинка1 = ПараметрыФункции["Picture"];
Картинка2 = ПараметрыФункции["Picture2"];
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
МассивКартинок = Новый Массив;
МассивКартинок.Добавить(Картинка1);
МассивКартинок.Добавить(Картинка2);
// Стандартные реквизиты
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
СтруктураТовара.Вставить("images" , МассивКартинок);
// Видео
OPI_Ozon.ДобавитьВидеоТовара(СтруктураТовара, Видео, "viedo1");
// Атрибуты, индивидуальные для разных категорий
АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы");
АтрибутКатегории2 = Новый Структура("dictionary_value_id,value", 5060050 , "Samsung");
АтрибутКатегории3 = Новый Структура("dictionary_value_id,value", 61576 , "серый");
АтрибутКатегории4 = Новый Структура("dictionary_value_id,value", 95911 , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
АтрибутКатегории5 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок");
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 5076 , 0, АтрибутКатегории1);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 85 , 0, АтрибутКатегории2);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 10096, 0, АтрибутКатегории3);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 8229 , 0, АтрибутКатегории4);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории5);
Результат = OPI_Ozon.СоздатьОбновитьТовары(IDКлиента, КлючAPI, СтруктураТовара);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруТовара", "Ozon");
Проверка_ОзонЗаданиеЗагрузки(Результат);
IDЗадания = Результат["result"]["task_id"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Ozon_TaskID", IDЗадания);
ПараметрыФункции.Вставить("Ozon_TaskID", IDЗадания);
OPI_Инструменты.Пауза(60);
КонецПроцедуры
Процедура Ozon_ДобавитьВидеоТовара(ПараметрыФункции)
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
// Видео
OPI_Ozon.ДобавитьВидеоТовара(СтруктураТовара, Видео, "viedo1");
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(СтруктураТовара, "ДобавитьВидеоТовара", "Ozon");
Проверка_Структура(СтруктураТовара);
КонецПроцедуры
Процедура Ozon_ДобавитьВидеообложкуТовара(ПараметрыФункции)
Видео = "https://rutube.ru/video/c6cc4d620b1d4338901770a44b3e82f4/";
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
// Видеообложка
OPI_Ozon.ДобавитьВидеообложкуТовара(СтруктураТовара, Видео);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(СтруктураТовара, "ДобавитьВидеообложкуТовара", "Ozon");
Проверка_Структура(СтруктураТовара);
КонецПроцедуры
Процедура Ozon_ДополнитьКомплексныйАтрибут(ПараметрыФункции)
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("description_category_id", 17028922);
СтруктураТовара.Вставить("name" , "Комплект защитных плёнок для X3 NFC. Темный хлопок");
СтруктураТовара.Вставить("offer_id" , "143210608");
СтруктураТовара.Вставить("barcode" , "112772873170");
СтруктураТовара.Вставить("price" , "1000");
СтруктураТовара.Вставить("old_price" , "1100");
СтруктураТовара.Вставить("vat" , "0.1");
СтруктураТовара.Вставить("height" , 250);
СтруктураТовара.Вставить("width" , 150);
СтруктураТовара.Вставить("depth" , 10);
СтруктураТовара.Вставить("dimension_unit" , "mm");
СтруктураТовара.Вставить("weight" , 100);
СтруктураТовара.Вставить("weight_unit" , "g");
АтрибутКатегории1 = Новый Структура("dictionary_value_id,value", 971082156, "Стойка для акустической системы");
АтрибутКатегории2 = Новый Структура("value", "Комплект защитных плёнок для X3 NFC. Темный хлопок");
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 5076 , 0, АтрибутКатегории1);
OPI_Ozon.ДополнитьКомплексныйАтрибут(СтруктураТовара, 9048 , 0, АтрибутКатегории2);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(СтруктураТовара, "ДополнитьКомплексныйАтрибут", "Ozon");
Проверка_Структура(СтруктураТовара);
КонецПроцедуры
Процедура Ozon_ПолучитьСтатусДобавленияТовара(ПараметрыФункции)
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
IDЗадачи = ПараметрыФункции["Ozon_TaskID"];
Результат = OPI_Ozon.ПолучитьСтатусДобавленияТовара(IDКлиента, КлючAPI, IDЗадачи);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтатусДобавленияТовара", "Ozon");
Проверка_ОзонНовыеТовары(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -224,6 +224,72 @@
НоваяСтрока.Область = "Атрибуты и характеристики";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "СоздатьОбновитьТовары";
НоваяСтрока.МетодПоиска = "СОЗДАТЬОБНОВИТЬТОВАРЫ";
НоваяСтрока.Параметр = "--clientid";
НоваяСтрока.Описание = "Идентификатор клиента";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока.ОписаниеМетода = "Создает новые или обновляет существующие товары по структурам полей
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "СоздатьОбновитьТовары";
НоваяСтрока.МетодПоиска = "СОЗДАТЬОБНОВИТЬТОВАРЫ";
НоваяСтрока.Параметр = "--apikey";
НоваяСтрока.Описание = "API ключ";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "СоздатьОбновитьТовары";
НоваяСтрока.МетодПоиска = "СОЗДАТЬОБНОВИТЬТОВАРЫ";
НоваяСтрока.Параметр = "--items";
НоваяСтрока.Описание = "Массив или одна структура полей описания товара";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ПолучитьСтатусДобавленияТовара";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТАТУСДОБАВЛЕНИЯТОВАРА";
НоваяСтрока.Параметр = "--clientid";
НоваяСтрока.Описание = "Идентификатор клиента";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока.ОписаниеМетода = "Получает статус добавления нового товара по ID задачи";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ПолучитьСтатусДобавленияТовара";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТАТУСДОБАВЛЕНИЯТОВАРА";
НоваяСтрока.Параметр = "--apikey";
НоваяСтрока.Описание = "API ключ";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ПолучитьСтатусДобавленияТовара";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТАТУСДОБАВЛЕНИЯТОВАРА";
НоваяСтрока.Параметр = "--taskid";
НоваяСтрока.Описание = "ID задачи добавления товара";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
@ -234,6 +300,99 @@
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока.ОписаниеМетода = "Получает структуру стандартных полей товара";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДобавитьВидеоТовара";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬВИДЕОТОВАРА";
НоваяСтрока.Параметр = "--item";
НоваяСтрока.Описание = "Основная структура полей товара. См. ПолучитьСтруктуруТовара";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока.ОписаниеМетода = "Добавляет видео к атрибутам товара";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДобавитьВидеоТовара";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬВИДЕОТОВАРА";
НоваяСтрока.Параметр = "--url";
НоваяСтрока.Описание = "URL к видео для добавления";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДобавитьВидеоТовара";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬВИДЕОТОВАРА";
НоваяСтрока.Параметр = "--title";
НоваяСтрока.Описание = "Техническое наименование видео";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДобавитьВидеообложкуТовара";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬВИДЕООБЛОЖКУТОВАРА";
НоваяСтрока.Параметр = "--item";
НоваяСтрока.Описание = "Основная структура полей товара. См. ПолучитьСтруктуруТовара";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока.ОписаниеМетода = "Добавляет видеообложку к атрибутам товара";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДобавитьВидеообложкуТовара";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬВИДЕООБЛОЖКУТОВАРА";
НоваяСтрока.Параметр = "--url";
НоваяСтрока.Описание = "URL к видеообложке для добавления";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДополнитьКомплексныйАтрибут";
НоваяСтрока.МетодПоиска = "ДОПОЛНИТЬКОМПЛЕКСНЫЙАТРИБУТ";
НоваяСтрока.Параметр = "--object";
НоваяСтрока.Описание = "Структура комплексного атрибута или структура товара";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока.ОписаниеМетода = "Оформляет значение в формате атрибута и добавляет его в массив attributes переданной коллекции";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДополнитьКомплексныйАтрибут";
НоваяСтрока.МетодПоиска = "ДОПОЛНИТЬКОМПЛЕКСНЫЙАТРИБУТ";
НоваяСтрока.Параметр = "--attributeid";
НоваяСтрока.Описание = "ID атрибута";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДополнитьКомплексныйАтрибут";
НоваяСтрока.МетодПоиска = "ДОПОЛНИТЬКОМПЛЕКСНЫЙАТРИБУТ";
НоваяСтрока.Параметр = "--complexid";
НоваяСтрока.Описание = "Комплексный ID";
НоваяСтрока.Область = "Загрузка и обновление товаров";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ozon";
НоваяСтрока.Модуль = "OPI_Ozon";
НоваяСтрока.Метод = "ДополнитьКомплексныйАтрибут";
НоваяСтрока.МетодПоиска = "ДОПОЛНИТЬКОМПЛЕКСНЫЙАТРИБУТ";
НоваяСтрока.Параметр = "--values";
НоваяСтрока.Описание = "Значение или массив значений для добавления в values";
НоваяСтрока.Область = "Загрузка и обновление товаров";
Возврат ТаблицаСостава;
КонецФункции