mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-11-28 09:08:38 +02:00
Main build (Jenkins)
This commit is contained in:
parent
98c2fd9d68
commit
94226c9f14
@ -281,7 +281,7 @@ def test_bitrix24(){
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe bitrix24 GetTasksList --url "test" --filter "test" --offset "test" --token "test" --debug --test '
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe bitrix24 GetTasksList --url "test" --filter "test" --offset "test" --token "test" --select "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
|
@ -281,7 +281,7 @@ def test_bitrix24(){
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe bitrix24 ПолучитьСписокЗадач --url "test" --filter "test" --offset "test" --token "test" --debug --test '
|
||||
powershell encoding: 'UTF-8', script:'./oint.exe bitrix24 ПолучитьСписокЗадач --url "test" --filter "test" --offset "test" --token "test" --select "test" --debug --test '
|
||||
}
|
||||
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
|
@ -6,10 +6,14 @@
|
||||
Filter.Insert("!RESPONSIBLE_ID", 10); // Performers with ID not equal to 10
|
||||
Filter.Insert(">=CREATED_DATE ", CurrentDate - 60 * 60 * 24); // Creation date >= yesterday
|
||||
|
||||
Fields = New Array;
|
||||
Fields.Add("UF_CRM_TASK");
|
||||
Fields.Add("CREATED_BY");
|
||||
|
||||
Indent = 1;
|
||||
URL = "https://b24-ar17wx.bitrix24.by/rest/1/1o2...";
|
||||
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter);
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter, , , Fields);
|
||||
|
||||
URL = "b24-ar17wx.bitrix24.by";
|
||||
Token = "67ac1467006e9f06006b12e400000001000...";
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Appointment.Insert("cdek_number", "1106207236");
|
||||
Appointment.Insert("order_uuid" , OrderUUID);
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 10, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 15, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("time_from" , "10:00");
|
||||
Appointment.Insert("time_to" , "17:00");
|
||||
Appointment.Insert("comment" , "Group office");
|
||||
|
@ -10,7 +10,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
`Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export`
|
||||
`Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "", Val Fields = "") Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
@ -18,6 +18,7 @@ import TabItem from '@theme/TabItem';
|
||||
| Filter | --filter | Structure of KeyAndValue | ✖ | Structure of task filter (see GetTaskFieldsStructure) |
|
||||
| Indent | --offset | Number, String | ✖ | Offset of tasks list |
|
||||
| Token | --token | String | ✖ | Access token, when app auth method used |
|
||||
| Fields | --select | String, Array of String | ✖ | A list of task fields in the response. All non calculable by default |
|
||||
|
||||
|
||||
Returns: Map Of KeyAndValue - serialized JSON of answer from Bitrix24 API
|
||||
@ -39,10 +40,14 @@ Method at API documentation: [tasks.task.list](https://dev.1c-bitrix.ru/rest_hel
|
||||
Filter.Insert("!RESPONSIBLE_ID", 10); // Performers with ID not equal to 10
|
||||
Filter.Insert(">=CREATED_DATE ", CurrentDate - 60 * 60 * 24); // Creation date >= yesterday
|
||||
|
||||
Fields = New Array;
|
||||
Fields.Add("UF_CRM_TASK");
|
||||
Fields.Add("CREATED_BY");
|
||||
|
||||
Indent = 1;
|
||||
URL = "https://b24-ar17wx.bitrix24.by/rest/1/1o2...";
|
||||
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter);
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter, , , Fields);
|
||||
|
||||
URL = "b24-ar17wx.bitrix24.by";
|
||||
Token = "67ac1467006e9f06006b12e400000001000...";
|
||||
|
@ -38,7 +38,7 @@ Method at API documentation: [Registration of delivery appointment](https://api-
|
||||
|
||||
Appointment.Insert("cdek_number", "1106207236");
|
||||
Appointment.Insert("order_uuid" , OrderUUID);
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 10, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 15, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("time_from" , "10:00");
|
||||
Appointment.Insert("time_to" , "17:00");
|
||||
Appointment.Insert("comment" , "Group office");
|
||||
|
@ -6,10 +6,14 @@
|
||||
Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10
|
||||
Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера
|
||||
|
||||
Поля = Новый Массив;
|
||||
Поля.Добавить("UF_CRM_TASK");
|
||||
Поля.Добавить("CREATED_BY");
|
||||
|
||||
Отступ = 1;
|
||||
URL = "https://b24-ar17wx.bitrix24.by/rest/1/1o2...";
|
||||
|
||||
Результат = OPI_Bitrix24.ПолучитьСписокЗадач(URL, Фильтр);
|
||||
Результат = OPI_Bitrix24.ПолучитьСписокЗадач(URL, Фильтр, , , Поля);
|
||||
|
||||
URL = "b24-ar17wx.bitrix24.by";
|
||||
Токен = "67ac1467006e9f06006b12e400000001000...";
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Договоренность.Вставить("cdek_number", "1106207236");
|
||||
Договоренность.Вставить("order_uuid" , UUIDЗаказа);
|
||||
Договоренность.Вставить("date" , Формат(ТекущаяДата + 60 * 60 * 24 * 10, "ДФ=yyyy-MM-dd"));
|
||||
Договоренность.Вставить("date" , Формат(ТекущаяДата + 60 * 60 * 24 * 15, "ДФ=yyyy-MM-dd"));
|
||||
Договоренность.Вставить("time_from" , "10:00");
|
||||
Договоренность.Вставить("time_to" , "17:00");
|
||||
Договоренность.Вставить("comment" , "Офис группы компаний");
|
||||
|
@ -10,7 +10,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
`Функция ПолучитьСписокЗадач(Знач URL, Знач Фильтр = "", Знач Отступ = 0, Знач Токен = "") Экспорт`
|
||||
`Функция ПолучитьСписокЗадач(Знач URL, Знач Фильтр = "", Знач Отступ = 0, Знач Токен = "", Знач Поля = "") Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
@ -18,6 +18,7 @@ import TabItem from '@theme/TabItem';
|
||||
| Фильтр | --filter | Структура из КлючИЗначение | ✖ | Структура отбора задач (см. ПолучитьСтруктуруФильтраЗадач) |
|
||||
| Отступ | --offset | Число, Строка | ✖ | Отступ от начала списка для полчения задач > 50 шт. рекурсивно |
|
||||
| Токен | --token | Строка | ✖ | Токен авторизации, если используется не вебхук |
|
||||
| Поля | --select | Строка, Массив Из Строка | ✖ | Список полей задачи в ответе. Все невычисляемые по умолчанию |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
|
||||
@ -39,10 +40,14 @@ import TabItem from '@theme/TabItem';
|
||||
Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10
|
||||
Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера
|
||||
|
||||
Поля = Новый Массив;
|
||||
Поля.Добавить("UF_CRM_TASK");
|
||||
Поля.Добавить("CREATED_BY");
|
||||
|
||||
Отступ = 1;
|
||||
URL = "https://b24-ar17wx.bitrix24.by/rest/1/1o2...";
|
||||
|
||||
Результат = OPI_Bitrix24.ПолучитьСписокЗадач(URL, Фильтр);
|
||||
Результат = OPI_Bitrix24.ПолучитьСписокЗадач(URL, Фильтр, , , Поля);
|
||||
|
||||
URL = "b24-ar17wx.bitrix24.by";
|
||||
Токен = "67ac1467006e9f06006b12e400000001000...";
|
||||
|
@ -38,7 +38,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Договоренность.Вставить("cdek_number", "1106207236");
|
||||
Договоренность.Вставить("order_uuid" , UUIDЗаказа);
|
||||
Договоренность.Вставить("date" , Формат(ТекущаяДата + 60 * 60 * 24 * 10, "ДФ=yyyy-MM-dd"));
|
||||
Договоренность.Вставить("date" , Формат(ТекущаяДата + 60 * 60 * 24 * 15, "ДФ=yyyy-MM-dd"));
|
||||
Договоренность.Вставить("time_from" , "10:00");
|
||||
Договоренность.Вставить("time_to" , "17:00");
|
||||
Договоренность.Вставить("comment" , "Офис группы компаний");
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -420,14 +420,16 @@ EndFunction
|
||||
// Filter - Structure of KeyAndValue - Structure of task filter (see GetTaskFieldsStructure) - filter
|
||||
// Indent - Number, String - Offset of tasks list - offset
|
||||
// Token - String - Access token, when app auth method used - token
|
||||
// Fields - String, Array of String - A list of task fields in the response. All non calculable by default - select
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - serialized JSON of answer from Bitrix24 API
|
||||
Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export
|
||||
Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "", Val Fields = "") Export
|
||||
|
||||
Parameters = NormalizeAuth(URL, Token, "tasks.task.list");
|
||||
OPI_Tools.AddField("filter", Filter, "Collection", Parameters);
|
||||
OPI_Tools.AddField("start" , Indent, "String" , Parameters);
|
||||
OPI_Tools.AddField("filter", Filter , "Collection", Parameters);
|
||||
OPI_Tools.AddField("start" , Indent , "String" , Parameters);
|
||||
OPI_Tools.AddField("select", Fields , "Array" , Parameters);
|
||||
|
||||
Response = OPI_Tools.Post(URL, Parameters);
|
||||
|
||||
|
@ -677,8 +677,6 @@ Function GetCashboxCheck(Val Token, Val UUID, Val TestAPI = False) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
|
||||
|
||||
// Get order description
|
||||
// Gets the layout of order for the CreateOrder function
|
||||
//
|
||||
|
@ -8419,10 +8419,14 @@ Procedure Bitrix24_GetTasksList(FunctionParameters)
|
||||
Filter.Insert("!RESPONSIBLE_ID", 10); // Performers with ID not equal to 10
|
||||
Filter.Insert(">=CREATED_DATE ", CurrentDate - 60 * 60 * 24); // Creation date >= yesterday
|
||||
|
||||
Fields = New Array;
|
||||
Fields.Add("UF_CRM_TASK");
|
||||
Fields.Add("CREATED_BY");
|
||||
|
||||
Indent = 1;
|
||||
URL = FunctionParameters["Bitrix24_URL"];
|
||||
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter);
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter, , , Fields);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "GetTasksList (wh)", "Bitrix24");
|
||||
OPI_TestDataRetrieval.Check_BitrixTasksList(Result); // SKIP
|
||||
@ -14104,7 +14108,7 @@ Procedure CDEK_RegisterDeliveryAppointment(FunctionParameters)
|
||||
|
||||
Appointment.Insert("cdek_number", "1106207236");
|
||||
Appointment.Insert("order_uuid" , OrderUUID);
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 10, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 15, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("time_from" , "10:00");
|
||||
Appointment.Insert("time_to" , "17:00");
|
||||
Appointment.Insert("comment" , "Group office");
|
||||
|
@ -522,7 +522,7 @@ Procedure Check_Map(Val Result, Val Filling = True) Export
|
||||
If Filling Then
|
||||
ExpectsThat(Result).Заполнено();
|
||||
Else
|
||||
ExpectsThat(Result).НеЗаполнено();
|
||||
ExpectsThat(ValueIsFilled(Result)).Равно(False);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
@ -420,14 +420,16 @@ EndFunction
|
||||
// Filter - Structure of KeyAndValue - Structure of task filter (see GetTaskFieldsStructure) - filter
|
||||
// Indent - Number, String - Offset of tasks list - offset
|
||||
// Token - String - Access token, when app auth method used - token
|
||||
// Fields - String, Array of String - A list of task fields in the response. All non calculable by default - select
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - serialized JSON of answer from Bitrix24 API
|
||||
Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export
|
||||
Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "", Val Fields = "") Export
|
||||
|
||||
Parameters = NormalizeAuth(URL, Token, "tasks.task.list");
|
||||
OPI_Tools.AddField("filter", Filter, "Collection", Parameters);
|
||||
OPI_Tools.AddField("start" , Indent, "String" , Parameters);
|
||||
OPI_Tools.AddField("filter", Filter , "Collection", Parameters);
|
||||
OPI_Tools.AddField("start" , Indent , "String" , Parameters);
|
||||
OPI_Tools.AddField("select", Fields , "Array" , Parameters);
|
||||
|
||||
Response = OPI_Tools.Post(URL, Parameters);
|
||||
|
||||
|
@ -677,8 +677,6 @@ Function GetCashboxCheck(Val Token, Val UUID, Val TestAPI = False) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
|
||||
|
||||
// Get order description
|
||||
// Gets the layout of order for the CreateOrder function
|
||||
//
|
||||
|
@ -522,7 +522,7 @@ Procedure Check_Map(Val Result, Val Filling = True) Export
|
||||
If Filling Then
|
||||
ExpectsThat(Result).Заполнено();
|
||||
Else
|
||||
ExpectsThat(Result).НеЗаполнено();
|
||||
ExpectsThat(ValueIsFilled(Result)).Равно(False);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
@ -8419,10 +8419,14 @@ Procedure Bitrix24_GetTasksList(FunctionParameters)
|
||||
Filter.Insert("!RESPONSIBLE_ID", 10); // Performers with ID not equal to 10
|
||||
Filter.Insert(">=CREATED_DATE ", CurrentDate - 60 * 60 * 24); // Creation date >= yesterday
|
||||
|
||||
Fields = New Array;
|
||||
Fields.Add("UF_CRM_TASK");
|
||||
Fields.Add("CREATED_BY");
|
||||
|
||||
Indent = 1;
|
||||
URL = FunctionParameters["Bitrix24_URL"];
|
||||
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter);
|
||||
Result = OPI_Bitrix24.GetTasksList(URL, Filter, , , Fields);
|
||||
|
||||
OPI_TestDataRetrieval.WriteLog(Result, "GetTasksList (wh)", "Bitrix24");
|
||||
OPI_TestDataRetrieval.Check_BitrixTasksList(Result); // SKIP
|
||||
@ -14104,7 +14108,7 @@ Procedure CDEK_RegisterDeliveryAppointment(FunctionParameters)
|
||||
|
||||
Appointment.Insert("cdek_number", "1106207236");
|
||||
Appointment.Insert("order_uuid" , OrderUUID);
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 10, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("date" , Format(CurrentDate + 60 * 60 * 24 * 15, "DF=yyyy-MM-dd"));
|
||||
Appointment.Insert("time_from" , "10:00");
|
||||
Appointment.Insert("time_to" , "17:00");
|
||||
Appointment.Insert("comment" , "Group office");
|
||||
|
@ -513,6 +513,16 @@
|
||||
NewLine.Область = "Tasks managment";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Библиотека = "bitrix24";
|
||||
NewLine.Модуль = "OPI_Bitrix24";
|
||||
NewLine.Метод = "GetTasksList";
|
||||
NewLine.МетодПоиска = "GETTASKSLIST";
|
||||
NewLine.Параметр = "--select";
|
||||
NewLine.Описание = "A list of task fields in the response. All non calculable by default (optional, def. val. - Empty value)";
|
||||
NewLine.Область = "Tasks managment";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Библиотека = "bitrix24";
|
||||
NewLine.Модуль = "OPI_Bitrix24";
|
||||
|
@ -8419,10 +8419,10 @@
|
||||
Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10
|
||||
Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера
|
||||
|
||||
Поля = Новый Массив;
|
||||
Поля.Добавить("UF_CRM_TASK");
|
||||
Поля.Добавить("CREATED_BY");
|
||||
|
||||
Поля = Новый Массив;
|
||||
Поля.Добавить("UF_CRM_TASK");
|
||||
Поля.Добавить("CREATED_BY");
|
||||
|
||||
Отступ = 1;
|
||||
URL = ПараметрыФункции["Bitrix24_URL"];
|
||||
|
||||
@ -14108,7 +14108,7 @@
|
||||
|
||||
Договоренность.Вставить("cdek_number", "1106207236");
|
||||
Договоренность.Вставить("order_uuid" , UUIDЗаказа);
|
||||
Договоренность.Вставить("date" , Формат(ТекущаяДата + 60 * 60 * 24 * 10, "ДФ=yyyy-MM-dd"));
|
||||
Договоренность.Вставить("date" , Формат(ТекущаяДата + 60 * 60 * 24 * 15, "ДФ=yyyy-MM-dd"));
|
||||
Договоренность.Вставить("time_from" , "10:00");
|
||||
Договоренность.Вставить("time_to" , "17:00");
|
||||
Договоренность.Вставить("comment" , "Офис группы компаний");
|
||||
|
@ -522,7 +522,7 @@
|
||||
Если Заполненность Тогда
|
||||
ОжидаетЧто(Результат).Заполнено();
|
||||
Иначе
|
||||
ОжидаетЧто(Результат).НеЗаполнено();
|
||||
ОжидаетЧто(ЗначениеЗаполнено(Результат)).Равно(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -1893,9 +1893,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@ -8419,10 +8419,10 @@
|
||||
Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10
|
||||
Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера
|
||||
|
||||
Поля = Новый Массив;
|
||||
Поля.Добавить("UF_CRM_TASK");
|
||||
Поля.Добавить("CREATED_BY");
|
||||
|
||||
Поля = Новый Массив;
|
||||
Поля.Добавить("UF_CRM_TASK");
|
||||
Поля.Добавить("CREATED_BY");
|
||||
|
||||
Отступ = 1;
|
||||
URL = ПараметрыФункции["Bitrix24_URL"];
|
||||
|
||||
|
@ -480,7 +480,11 @@
|
||||
НоваяСтрока.Параметр = "--url";
|
||||
НоваяСтрока.Описание = "URL внешнего вебхука или адрес Bitrix24 при использовании токена";
|
||||
НоваяСтрока.Область = "Работа с задачами";
|
||||
НоваяСтрока.ОписаниеМетода = "Получает список задач (50 шт. за запрос максимум) с фильтром или без (см. ПолучитьСтруктуруФильтраЗадач)";
|
||||
НоваяСтрока.ОписаниеМетода = "Получает список задач (50 шт. за запрос максимум) с фильтром или без (см. ПолучитьСтруктуруФильтраЗадач)
|
||||
|
|
||||
| Пример указания параметра типа массив:
|
||||
| --param ""['Val1','Val2','Val3']""
|
||||
|";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
@ -513,6 +517,16 @@
|
||||
НоваяСтрока.Область = "Работа с задачами";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "bitrix24";
|
||||
НоваяСтрока.Модуль = "OPI_Bitrix24";
|
||||
НоваяСтрока.Метод = "ПолучитьСписокЗадач";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКЗАДАЧ";
|
||||
НоваяСтрока.Параметр = "--select";
|
||||
НоваяСтрока.Описание = "Список полей задачи в ответе. Все невычисляемые по умолчанию (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Работа с задачами";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "bitrix24";
|
||||
НоваяСтрока.Модуль = "OPI_Bitrix24";
|
||||
|
Loading…
Reference in New Issue
Block a user