diff --git a/ci/os/MainProcessingScript.os b/ci/os/MainProcessingScript.os
index 5bfe2ccd46..b1c2266ddc 100644
--- a/ci/os/MainProcessingScript.os
+++ b/ci/os/MainProcessingScript.os
@@ -15,6 +15,7 @@
Обработчик = Новый SpellCheckMethods(ДанныеПроекта);
Обработчик = Новый Versioning(ДанныеПроекта);
Обработчик = Новый HttpToClientConverter(ДанныеПроекта);
+ Обработчик = Новый IntermediateResultProcessingCheck(ДанныеПроекта);
Обработчик = Новый ConversionMethods(ДанныеПроекта);
Обработчик = Новый ACIndexGenerator(ДанныеПроекта);
Обработчик = Новый LocalizationMethods(ДанныеПроекта);
diff --git a/ci/os/internal/Classes/IntermediateResultProcessingCheck.os b/ci/os/internal/Classes/IntermediateResultProcessingCheck.os
new file mode 100644
index 0000000000..0b293e800f
--- /dev/null
+++ b/ci/os/internal/Classes/IntermediateResultProcessingCheck.os
@@ -0,0 +1,118 @@
+#Использовать "./internal"
+#Использовать osparser
+
+Перем БылиОшибки;
+
+Процедура ПриСозданииОбъекта(Знач ДанныеПроекта_ = Неопределено)
+
+ Если ДанныеПроекта_ = Неопределено Тогда
+ ДанныеПроекта = Новый ProjectData;
+ Иначе
+ ДанныеПроекта = ДанныеПроекта_;
+ КонецЕсли;
+
+ CommonTools.СообщитьПроцесс("Intermediate result processing check");
+
+ БылиОшибки = Ложь;
+
+ Расположение = ДанныеПроекта.ПолучитьЗначениеНастройки("paths.configurationSrc");
+ ОбщийМассивМодулей = Новый Массив;
+ ФайлыМодулей = НайтиФайлы(Расположение, "*.bsl", Истина);
+
+ Для Каждого ФайлМодуля Из ФайлыМодулей Цикл
+ ПроверитьМодуль(ФайлМодуля);
+ КонецЦикла;
+
+ Если БылиОшибки Тогда
+ ВызватьИсключение "Processing check failed!";
+ КонецЕсли;
+
+КонецПроцедуры
+
+Процедура ПроверитьМодуль(Знач ФайлМодуля)
+
+ ДокументМодуля = Новый ТекстовыйДокумент();
+ ДокументМодуля.Прочитать(ФайлМодуля.ПолноеИмя);
+
+ ТекстМодуля = ДокументМодуля.ПолучитьТекст();
+ Парсер = Новый ПарсерВстроенногоЯзыка;
+
+ СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
+
+ МассивПризнаков = ПолучитьМассивПризнаков(СтруктураМодуля, ДокументМодуля);
+
+ Для Каждого Метод Из СтруктураМодуля.Объявления Цикл
+
+ Если Метод.Тип = "ОбъявлениеМетода" Тогда
+
+ ТекстМетода = ПолучитьТекстМетода(Метод, ДокументМодуля);
+
+ ЧислоВхожденийHttp = 0;
+
+ Для Каждого Признак Из МассивПризнаков Цикл
+ ЧислоВхожденийHttp = ЧислоВхожденийHttp + СтрЧислоВхождений(ТекстМетода, Признак);
+ КонецЦикла;
+
+ ЧислоВхожденийОбработка = СтрЧислоВхождений(ТекстМетода, "НормализоватьПромежуточныйРезультат");
+ ЧислоВхожденийПропуска = СтрЧислоВхождений(ТекстМетода, "!IRPSkip");
+
+ Если ЧислоВхожденийОбработка + ЧислоВхожденийПропуска < ЧислоВхожденийHttp - 1 Тогда
+
+ БылиОшибки = Истина;
+ CommonTools.СообщитьПроцесс(СтрШаблон("Intermediate result processing not found: %1.%2"
+ , ФайлМодуля.Путь
+ , Метод.Сигнатура.Имя));
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция ПолучитьТекстМетода(Знач Метод, Знач ДокументМодуля)
+
+ МассивСтрокМетода = Новый Массив;
+
+ Для Н = Метод.Начало.НомерСтроки + 1 По Метод.Конец.НомерСтроки - 1 Цикл
+ МассивСтрокМетода.Добавить(ДокументМодуля.ПолучитьСтроку(Н));
+ КонецЦикла;
+
+ Возврат СтрСоединить(МассивСтрокМетода, Символы.ПС);
+
+КонецФункции
+
+Функция ПолучитьМассивПризнаков(Знач ДанныеМодуля, Знач ТекстовыйДокументМодуля)
+
+ СписокФункций = Новый Массив;
+ КоличествоФункций = 0;
+
+ СписокФункций.Добавить("OPI_HTTPКлиент");
+ СписокФункций.Добавить("OPI_ЗапросыHTTP");
+
+ Пока КоличествоФункций <> СписокФункций.Количество() Цикл
+
+ КоличествоФункций = СписокФункций.Количество();
+
+ Для Каждого Метод Из ДанныеМодуля.Объявления Цикл
+ Если Метод.Тип = "ОбъявлениеМетода" Тогда
+
+ ТекстМетод = ПолучитьТекстМетода(Метод, ТекстовыйДокументМодуля);
+ ИмяМетода = Метод.Сигнатура.Имя + "(";
+
+ Для Каждого Имя Из СписокФункций Цикл
+ Если СтрНайти(ТекстМетод, Имя) > 0 И СписокФункций.Найти(ИмяМетода) = Неопределено Тогда
+ СписокФункций.Добавить(ИмяМетода);
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЦикла;
+
+ Возврат СписокФункций;
+
+КонецФункции
\ No newline at end of file
diff --git a/docs/ru/md/Start/1C-version.md b/docs/ru/md/Start/1C-version.md
new file mode 100644
index 0000000000..1c41e77daa
--- /dev/null
+++ b/docs/ru/md/Start/1C-version.md
@@ -0,0 +1,44 @@
+---
+sidebar_position: 3
+---
+
+# Работа с версией для 1С:Предприятие
+
+Открытый пакет интеграций изначально разрабатывается как расширение конфигурации для платформы 1С:Предприятие 8. Его методы доступны в виде общих модулей и могут использоваться в любой конфигурации, совместимой с требованиями проекта
+
+:::important
+Разработка ведется в режиме совместимости `8.3.10` с вариантом проверки `Предупреждать`. Режим совместимости расширения установлен в `8.3.15`
+:::
+
+## Установка
+
+Для начала работы необходимо добавить модули Открытого пакета интеграций в свою конфигурацию. Сделать это можно одним из нескольких способов:
+
+1. Из файла расширения `CFE` (рекомендуемый способ):
+
+ Скачайте файл `OpenIntegrations_x.x.x_lang.cfe` из [последнего релиза](https://github.com/Bayselonarrend/OpenIntegrations/releases/latest) или [раздела «Скачать»](/download), после чего загрузите его в список расширений конфигурации через конфигуратор
+
+2. Из XML-выгрузки:
+
+ Скачайте архив `XML.zip`, распакуйте его и загрузите расширение через панель расширений, указав каталог с XML-файлами
+
+3. Из проекта EDT:
+
+ Скачайте архив `EDT.zip` или подключите исходный проект из репозитория в 1С:EDT. Подробнее в разделе [Сборка из исходников](/docs/Start/Build-from-source)
+
+4. Через сравнение-объединение с CF-файлом конфигурации:
+
+ Кроме вариантов поставки в виде расширения, Открытый пакет интеграций также доступен в виде `cf` файла конфигурации. Файл `OpenIntegrations_x.x.x_lang.cf` может быть использован для сравнения-объединения объектов ОПИ с основной конфигурацией, если использование расширения нежелательно или невозможно
+
+Подробное описание каждого варианта поставки приведено в разделе [Про варианты релизов](/docs/Start/Release-variants). Независимо от способа установки рекомендуется получать файлы из релиза, [страницы загрузок](/download) или ветки `stable` репозитория
+
+Также допустимо вручную скопировать нужные общие модули из исходников в свой проект, однако для регулярного обновления удобнее использовать готовые варианты поставки
+
+## Использование на клиенте и на сервере
+
+Начиная с версии `2.1.0`, все основные модули Открытого пакета интеграций доступны как на сервере, так и на клиенте. Однако, в отличии от серверных вызовов, работа с методами ОПИ на клиенте сопряжена с некоторыми особенностями:
+
++ `Web-клиент` не поддерживается
++ Не поддерживается запуск фоновых заданий через параметр `dontwait` настроек [расширенного вызова](/docs/Start/Advanced-call)
++ При первом вызове функции библиотеки, использующей внешние компоненты, будет произведена их установка. Подробнее в разделе [О внешних компонентах](/docs/Start/Component-requirements)
+
diff --git a/docs/ru/md/Start/Advanced-call.md b/docs/ru/md/Start/Advanced-call.md
index 99ba003740..39ca446cd0 100644
--- a/docs/ru/md/Start/Advanced-call.md
+++ b/docs/ru/md/Start/Advanced-call.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 4
+sidebar_position: 5
keywords: [1C, 1С, 1С:Предприятие, OneScript, CLI, HTTP, прокси, таймаут, расширенный вызов]
---
diff --git a/docs/ru/md/Start/Backward-compatibility.md b/docs/ru/md/Start/Backward-compatibility.md
index e991043147..bb3460796f 100644
--- a/docs/ru/md/Start/Backward-compatibility.md
+++ b/docs/ru/md/Start/Backward-compatibility.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# Об обратной совместимости
diff --git a/docs/ru/md/Start/Build-from-source.md b/docs/ru/md/Start/Build-from-source.md
index 8737def332..ad546f6fc7 100644
--- a/docs/ru/md/Start/Build-from-source.md
+++ b/docs/ru/md/Start/Build-from-source.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 7
+sidebar_position: 8
---
# Сборка из исходников
diff --git a/docs/ru/md/Start/Component-requirements.md b/docs/ru/md/Start/Component-requirements.md
index 4865a5b97f..66125ebbff 100644
--- a/docs/ru/md/Start/Component-requirements.md
+++ b/docs/ru/md/Start/Component-requirements.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# О внешних компонентах
@@ -50,6 +50,12 @@ sidebar_position: 5
+## Внешние компоненты `НаКлиенте` в версии для 1С:Предприятие
+
+Работа с методами, использующими внешние компоненты, в версии для 1С:Предприятие доступна как на стороне сервера, так и на стороне клиента. Но, в отличии от серверного варианта, где использование компонент скрыто и происходит бесшовно, в клиентском варианте внешние компоненты требуют обязательной интерактивной установки на конкретной клиентской машине. Этот процесс начинается при первом вызове функции для каждой используемой компоненты и сопровождается выводом диалогового окна, а также исключением с информацией о необходимости вызвать необходимую функцию повторно
+
+Кроме установки компонент по необходимости, все (или выбранные) компоненты могут быть установлены на конкретном клиенте заранее через обработку `Панель управления (ОПИ)`
+
## FAQ
Некоторые вопросы о работе и реализации внешних компонент, несвязанные напрямую с работой ОПИ
diff --git a/docs/ru/md/Start/Oscript-version.md b/docs/ru/md/Start/Oscript-version.md
index eb162298cc..e093699abb 100644
--- a/docs/ru/md/Start/Oscript-version.md
+++ b/docs/ru/md/Start/Oscript-version.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 3
+sidebar_position: 4
---
# Работа с OneScript-версией
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Bitrix24/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Bitrix24/Module.bsl
index f3c8573470..d8ad1db150 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Bitrix24/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Bitrix24/Module.bsl
@@ -2649,10 +2649,12 @@
OPI_Инструменты.ДобавитьПоле("id", IDКаталога, "Строка", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
- Результат = Ответ["result"];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+
+ Результат = Тело["result"];
Если ЗначениеЗаполнено(Результат) Тогда
-
+
ИмяПоля = Результат["field"];
URLЗагрузки = Результат["uploadUrl"];
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_CDEK/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_CDEK/Module.bsl
index 42685d25f7..a0a14c40c6 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_CDEK/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_CDEK/Module.bsl
@@ -548,20 +548,15 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID);
OPI_ПреобразованиеТипов.ПолучитьБулево(ПолучитьФайл);
- URL = СформироватьURL("/print/orders/" + UUID, ТестовыйAPI);
+ URL = СформироватьURL(СтрШаблон("/print/orders/%1", UUID), ТестовыйAPI);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки);
Если ПолучитьФайл Тогда
- Содержимое = Ответ["entity"];
-
- Если Не ЗначениеЗаполнено(Содержимое) Тогда
- Возврат Ответ;
- КонецЕсли;
-
- URL = Содержимое["url"];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ URL = OPI_Инструменты.ПолучитьИли(Тело, "entity.url", Неопределено);
Если Не ЗначениеЗаполнено(URL) Тогда
Возврат Ответ;
@@ -652,13 +647,8 @@
Если ПолучитьФайл Тогда
- Содержимое = Ответ["entity"];
-
- Если Не ЗначениеЗаполнено(Содержимое) Тогда
- Возврат Ответ;
- КонецЕсли;
-
- URL = Содержимое["url"];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ URL = OPI_Инструменты.ПолучитьИли(Тело, "entity.url", Неопределено);
Если Не ЗначениеЗаполнено(URL) Тогда
Возврат Ответ;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Dropbox/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Dropbox/Module.bsl
index beb4e30527..bc436bcb03 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Dropbox/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Dropbox/Module.bsl
@@ -136,6 +136,7 @@
Если ЗначениеЗаполнено(Аккаунт) Тогда
Результат = ПолучитьАккаунт(Токен, Аккаунт);
Иначе
+ // !IRPSkip
Результат = ПолучитьСвойАккаунт(Токен);
КонецЕсли;
@@ -277,6 +278,7 @@
Если Размер > Граница Тогда
Ответ = ЗагрузитьБольшойФайл(Токен, Файл, Путь, Режим);
Иначе
+ // !IRPSkip
Ответ = ЗагрузитьМалыйФайл(Токен, Файл, Путь, Режим);
КонецЕсли;
@@ -803,6 +805,7 @@
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
Ответ = PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
Иначе
+ // !IRPSkip
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки);
КонецЕсли;
@@ -859,7 +862,9 @@
ТекущаяПозиция = 0;
ПрочитаноБайт = 0;
ОбщийРазмер = Файл.Размер();
- Сессия = ОткрытьСессию(Токен);
+
+ // !IRPSkip
+ Сессия = ОткрытьСессию(Токен);
Если OPI_Инструменты.ЭтоКоллекция(Сессия) Тогда
Возврат Сессия;
@@ -884,7 +889,8 @@
Прервать;
КонецЕсли;
- Ответ = PostBinary(URL, ТекущиеДанные, Заголовки);
+ // !IRPSkip
+ PostBinary(URL, ТекущиеДанные, Заголовки);
ТекущаяПозиция = СледующаяПозиция;
@@ -932,8 +938,9 @@
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
Ответ = PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- Сессия = Ответ[SessionId];
+ Сессия = Тело[SessionId];
Если Сессия = Неопределено Тогда
Сессия = Ответ;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleCalendar/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleCalendar/Module.bsl
index a86dad6549..f357c3c0a3 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleCalendar/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleCalendar/Module.bsl
@@ -651,7 +651,8 @@
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
Существующее = ЗначениеЗаполнено(Событие);
- URL = "https://www.googleapis.com/calendar/v3/calendars/"
+
+ URL = "https://www.googleapis.com/calendar/v3/calendars/"
+ Календарь
+ "/events"
+ ?(Существующее, "/" + Событие, "");
@@ -680,6 +681,7 @@
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры);
+ // !IRPSkip
Если Существующее Тогда
Ответ = OPI_ЗапросыHTTP.PatchСТелом(URL, Параметры, Заголовки, Истина);
Иначе
@@ -703,9 +705,11 @@
Результат = OPI_ЗапросыHTTP.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
, Параметры
, Заголовки);
+
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Результат);
- Календари = Результат[Items];
- Страница = Результат[NPT];
+ Календари = Тело[Items];
+ Страница = Тело[NPT];
Для Каждого Календарь Из Календари Цикл
МассивКалендарей.Добавить(Календарь);
@@ -731,8 +735,10 @@
, Параметры
, Заголовки);
- События = Результат[Items];
- Страница = Результат[NPT];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Результат);
+
+ События = Тело[Items];
+ Страница = Тело[NPT];
Для Каждого Событие Из События Цикл
МассивСобытий.Добавить(Событие);
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleDrive/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleDrive/Module.bsl
index b42ced159d..e4ce862288 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleDrive/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GoogleDrive/Module.bsl
@@ -184,6 +184,7 @@
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
КонецЕсли;
+ // !IRPSkip
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
Если Подробно Тогда
@@ -559,9 +560,10 @@
КонецЕсли;
Результат = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Результат);
- Объекты = Результат[Files];
- Страница = Результат[NPT];
+ Объекты = Тело[Files];
+ Страница = Тело[NPT];
Для Каждого ТекущийОбъект Из Объекты Цикл
МассивОбъектов.Добавить(ТекущийОбъект);
@@ -638,7 +640,9 @@
MimeType = "mimeType";
Если ЗначениеЗаполнено(Идентификатор) Тогда
- MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)[MimeType];
+ Информация = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Информация);
+ MIME = Тело[MimeType];
Иначе
MIME = Описание["MIME"];
КонецЕсли;
@@ -663,11 +667,13 @@
Если Размер < РазмерЧасти И ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
Иначе
+ // !IRPSkip
Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор);
КонецЕсли;
Иначе
- Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
+ // !IRPSkip
+ Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
КонецЕсли;
Возврат Ответ;
@@ -719,6 +725,7 @@
HttpКлиент = OPI_ЗапросыHTTP.НовыйЗапрос().Инициализировать(URL);
+ // !IRPSkip
Ответ = HttpКлиент.УстановитьЗаголовки(Заголовки)
.УстановитьJsonТело(Описание)
.ОбработатьЗапрос(Метод)
@@ -727,6 +734,7 @@
АдресЗагрузки = Ответ.Заголовки["Location"];
Если Не ЗначениеЗаполнено(АдресЗагрузки) Тогда
+ // !IRPSkip
Возврат HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
КонецЕсли;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GreenMax/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GreenMax/Module.bsl
index 769b485e11..d424867319 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GreenMax/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_GreenMax/Module.bsl
@@ -908,7 +908,9 @@
Если Удалять Тогда
- IDУведомления = Ответ["receiptId"];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+
+ IDУведомления = Тело["receiptId"];
Если ЗначениеЗаполнено(IDУведомления) Тогда
Ответ.Вставить("deleting", УдалитьУведомление(ПараметрыДоступа, IDУведомления));
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Neocities/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Neocities/Module.bsl
index 23b1dc3d4d..b521e8f093 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Neocities/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Neocities/Module.bsl
@@ -192,6 +192,7 @@
URL = "https://neocities.org/api/upload";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
+ // !IRPSkip
КонечныйОтвет = OPI_ЗапросыHTTP.PostMultipart(URL
,
, ОбработанноеСоответствие
@@ -292,8 +293,9 @@
КонецЕсли;
УдаленныеФайлы = ПолучитьСписокФайлов(Токен, УдаленныйКаталог);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(УдаленныеФайлы);
- Если Не УдаленныеФайлы["result"] = "success" Тогда
+ Если Не Тело["result"] = "success" Тогда
//@skip-check constructor-function-return-section
Возврат УдаленныеФайлы;
КонецЕсли;
@@ -368,8 +370,9 @@
Если Не МассивУдаляемых.Количество() = 0 Тогда
Ответ = УдалитьВыбранныеФайлы(Токен, МассивУдаляемых);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- Если Не Ответ["result"] = "success" Тогда
+ Если Не Тело["result"] = "success" Тогда
МассивОшибок.Добавить(Ответ);
Иначе
@@ -392,8 +395,9 @@
Для Каждого ЛокальныйПуть Из ЛокальныеПути Цикл
Ответ = ЗагрузитьФайл(Токен, ЛокальныйПуть.Ключ, ЛокальныйПуть.Значение);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- Если Не Ответ["result"] = "success" Тогда
+ Если Не Тело["result"] = "success" Тогда
МассивОшибок.Добавить(Ответ);
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Notion/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Notion/Module.bsl
index 33a32370d9..1461a68d21 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Notion/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Notion/Module.bsl
@@ -103,6 +103,7 @@
ДобавитьРодителяСтраницы(Родитель, Истина, Параметры);
+ // !IRPSkip
Свойства = ЗаполнитьДанныеПоСхеме(Родитель, Данные, Токен);
Параметры.Вставить("properties", Свойства);
@@ -167,10 +168,14 @@
Files = "files";
Если ЗначениеЗаполнено(Данные)
- И (ТипЗнч(Данные) = Тип("Соответствие") Или ТипЗнч(Данные) = Тип("Структура")) Тогда
- Свойства = ЗаполнитьДанныеПоСхеме(Страница, Данные, Токен, Ложь);
+ И (ТипЗнч(Данные) = Тип("Соответствие")
+ Или ТипЗнч(Данные) = Тип("Структура")) Тогда
+
+ // !IRPSkip
+ Свойства = ЗаполнитьДанныеПоСхеме(Страница, Данные, Токен, Ложь);
+
Иначе
- Свойства = Новый Соответствие;
+ Свойства = Новый Соответствие;
КонецЕсли;
Если ЗначениеЗаполнено(Иконка) Тогда
@@ -354,8 +359,11 @@
ПреобразоватьИД(Родитель);
Если ТипЗнч(Блок) = Тип("Строка") Тогда
+
ПреобразоватьИД(Блок);
Блок = ВернутьБлок(Токен, Блок);
+ Блок = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Блок);
+
КонецЕсли;
МассивБлоков = Новый Массив;
@@ -654,6 +662,8 @@
ДанныеСхемы = ПолучитьСтраницу(Токен, Схема);
КонецЕсли;
+ ДанныеСхемы = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(ДанныеСхемы);
+
ПоляБазы = ДанныеСхемы["properties"];
Свойства = Новый Соответствие;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_S3/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_S3/Module.bsl
index d07b73954a..3002e630dd 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_S3/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_S3/Module.bsl
@@ -595,7 +595,8 @@
Ответ = ЗагрузитьОбъектЧастями(Наименование, Бакет, Содержимое, ОсновныеДанные_, Заголовки, Размеры, Каталог);
Иначе
-
+
+ // !IRPSkip
Ответ = ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные_, Заголовки, Каталог);
КонецЕсли;
@@ -836,7 +837,8 @@
ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные);
ЗаполнитьURLОбъекта(ОсновныеДанные_, Наименование, Бакет, Версия, Каталог);
- Ответ = ОтправитьЗапросБезТела("HEAD", ОсновныеДанные_, , Заголовки);
+ Ответ = ОтправитьЗапросБезТела("HEAD", ОсновныеДанные_, , Заголовки);
+
Ответ["response"] = Новый Структура;
Возврат Ответ;
@@ -871,6 +873,7 @@
, Знач ПутьСохранения = ""
, Знач Каталог = Ложь) Экспорт
+ // !IRPSkip
ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные);
ИнформацияОбъекта = ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные_, Версия, , Каталог);
@@ -899,6 +902,7 @@
Иначе
+ // !IRPSkip
Ответ = ПолучитьОбъектЦеликом(ОсновныеДанные_, Заголовки, ПутьСохранения);
КонецЕсли;
@@ -1370,6 +1374,8 @@
ТелоОтвета = ?(ОжидаютсяДвоичные
, Ответ.ВернутьОтветКакДвоичныеДанные(Ложь, Истина)
, Ответ.ВернутьОтветКакСтроку(Ложь, Истина));
+
+ ТелоОтвета = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(ТелоОтвета);
Ответ = ОформитьОтвет(HTTPОтвет, ТелоОтвета);
@@ -1444,6 +1450,7 @@
ЗаголовокИсточника.Вставить("Range", ЗаголовокУчастка);
ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокИсточника);
+ // !IRPSkip
ПромежуточныйРезультат = ПолучитьОбъектЦеликом(ОсновныеДанные, ЗаголовокИсточника);
ЗаписьФайла.Записать(ПромежуточныйРезультат);
@@ -1509,6 +1516,7 @@
OPI_ПреобразованиеТипов.ПолучитьДвоичныеИлиПоток(Содержимое);
НачалоЗагрузки = ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, Заголовки, Каталог);
+ ТелоНачала = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(НачалоЗагрузки);
ПолеID = "response.InitiateMultipartUploadResult.UploadId";
IDЗагрузки = Неопределено;
@@ -1517,7 +1525,7 @@
ПрочитаноБайт = 0;
НомерЧасти = 1;
- Если Не OPI_Инструменты.ПолеКоллекцииСуществует(НачалоЗагрузки, ПолеID, IDЗагрузки) Тогда
+ Если Не OPI_Инструменты.ПолеКоллекцииСуществует(ТелоНачала, ПолеID, IDЗагрузки) Тогда
Возврат НачалоЗагрузки;
КонецЕсли;
@@ -1550,6 +1558,8 @@
, НомерЧасти
, ТекущиеДанные
, Каталог);
+
+ Ответ = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
Если Ответ["status"] > ПоследнийКодУспеха Тогда
ВызватьИсключение "Сервер вернул статус " + Строка(Ответ["status"]);
@@ -1600,6 +1610,7 @@
Если Ошибка Тогда
Ответ = ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, , Каталог);
Иначе
+ // !IRPSkip
Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов, , Каталог);
КонецЕсли;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Slack/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Slack/Module.bsl
index a0a4a5c84e..b5065da1b1 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Slack/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Slack/Module.bsl
@@ -725,9 +725,11 @@
OPI_Инструменты.ДобавитьПоле("filename", ИмяФайла, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("length" , Размер , Строка_, Параметры);
- Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
- URL = Ответ[Upload_url];
- Идентификатор = Ответ[File_id];
+ Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+
+ URL = Тело[Upload_url];
+ Идентификатор = Тело[File_id];
Если Не ЗначениеЗаполнено(URL) Или Не ЗначениеЗаполнено(Идентификатор) Тогда
Возврат Ответ;
@@ -736,6 +738,7 @@
Файлы = Новый Соответствие;
Файлы.Вставить(ИмяФайла, Файл);
+ // !IRPSkip
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , Файлы, , Заголовки);
URL = "https://slack.com/api/files.completeUploadExternal";
ФайлСлак = Новый Структура("id, title", Идентификатор, Заголовок);
@@ -994,6 +997,7 @@
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка", Параметры);
+ // !IRPSkip
Если ВидЗапроса = "POST" Тогда
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки);
Иначе
@@ -1012,6 +1016,7 @@
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("file", ИдентификаторФайла , "Строка", Параметры);
+ // !IRPSkip
Если ВидЗапроса = "POST" Тогда
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки);
Иначе
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Telegram/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Telegram/Module.bsl
index 17eab3fa0a..26b0451637 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Telegram/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Telegram/Module.bsl
@@ -167,8 +167,6 @@
// ДвоичныеДанные - данные файла
Функция СкачатьФайл(Знач Токен, Знач IDФайла) Экспорт
- Result = "result";
-
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDФайла);
@@ -177,11 +175,11 @@
URL = СтрШаблон("api.telegram.org/bot%1/getFile", Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
- OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ Ответ = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- Путь = Ответ[Result]["file_path"];
+ Путь = Неопределено;
- Если Не ЗначениеЗаполнено(Путь) Тогда
+ Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Ответ, "result.file_path", Путь) Тогда
Загружен = Ложь;
@@ -189,9 +187,10 @@
OPI_Инструменты.Пауза(Н);
- Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
- Путь = Ответ[Result]["file_path"];
-
+ Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+
+ Путь = OPI_Инструменты.ПолучитьИли(Тело, "result.file_path", Неопределено);
Загружен = ЗначениеЗаполнено(Путь);
Если Загружен Тогда
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_VK/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_VK/Module.bsl
index 4a436db52e..643ad70d29 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_VK/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_VK/Module.bsl
@@ -136,6 +136,7 @@
Для Каждого КартинкаПоста Из МассивКартинок Цикл
+ // !IRPSkip
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
ОтветСоответствие = ПолучитьСоответствиеКартинки(КартинкаПоста, Параметры_, "Пост");
@@ -249,8 +250,10 @@
Параметры_.Вставить("add_answers", Ответы);
Параметры_.Вставить("question" , Вопрос);
- Опрос = OPI_ЗапросыHTTP.Get("api.vk.com/method/polls.create", Параметры_);
- ОпросСоответствие = Опрос.Получить(Response_);
+ Опрос = OPI_ЗапросыHTTP.Get("api.vk.com/method/polls.create", Параметры_);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Опрос);
+
+ ОпросСоответствие = Тело.Получить(Response_);
Если Не ЗначениеЗаполнено(ОпросСоответствие) Тогда
Возврат Опрос;
@@ -275,6 +278,7 @@
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
+ // !IRPSkip
ОтветСоответствие = ПолучитьСоответствиеКартинки(Картинка, Параметры_, "Пост");
OwnerId = ОтветСоответствие.Получить("owner_id");
@@ -451,8 +455,9 @@
OPI_Инструменты.ДобавитьПоле("album_id" , Альбом , Строка_, Параметры);
Ответ = OPI_ЗапросыHTTP.Get("api.vk.com/method/video.save", Параметры);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- Результат = Ответ["response"];
+ Результат = Тело["response"];
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат Ответ;
@@ -507,7 +512,8 @@
Файлы.Вставить(КлючКартинка, Картинка);
Ответ = OPI_ЗапросыHTTP.Get(Загрузка, Параметры);
- Результат = Ответ[Response_];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ Результат = Тело[Response_];
Если ЗначениеЗаполнено(Результат) Тогда
@@ -526,12 +532,13 @@
Для Н = 1 По 5 Цикл
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, Файлы);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- Если ТипЗнч(Ответ) <> Тип("Соответствие") Тогда
+ Если ТипЗнч(Тело) <> Тип("Соответствие") Тогда
Продолжить;
КонецЕсли;
- Успех = ЗаполнитьПараметрыЗагрузкиФото(Метод, Ответ, Параметры);
+ Успех = ЗаполнитьПараметрыЗагрузкиФото(Метод, Тело, Параметры);
Если Не Успех Тогда
Продолжить;
@@ -772,8 +779,10 @@
СтрокаНомеров = СтрСоединить(МассивНабора, ",");
Параметры_.Вставить("post_ids", СтрокаНомеров);
- Статистика = OPI_ЗапросыHTTP.Get("api.vk.com/method/stats.getPostReach", Параметры_);
- МассивСтатистики = Статистика[Response_];
+ Статистика = OPI_ЗапросыHTTP.Get("api.vk.com/method/stats.getPostReach", Параметры_);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Статистика);
+
+ МассивСтатистики = Тело[Response_];
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
МассивОтветов.Добавить(ЭлементСтатистики);
@@ -789,7 +798,8 @@
Параметры_.Вставить("post_ids", СтрокаНомеров);
Статистика = OPI_ЗапросыHTTP.Get("api.vk.com/method/stats.getPostReach", Параметры_);
- МассивСтатистики = Статистика[Response_];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Статистика);
+ МассивСтатистики = Тело[Response_];
Если ТипЗнч(МассивСтатистики) = Тип("Массив") Тогда
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
@@ -981,8 +991,10 @@
Response_ = "response";
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
+
Ответ = OPI_ЗапросыHTTP.Get("api.vk.com/method/market.getCategories", Параметры_);
- Результат = Ответ[Response_];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ Результат = Тело[Response_];
Если ЗначениеЗаполнено(Результат) Тогда
@@ -997,8 +1009,10 @@
КонецЕсли;
Параметры_.Вставить("count", Количество);
+
Ответ = OPI_ЗапросыHTTP.Get("api.vk.com/method/market.getCategories", Параметры_);
- Результат = Ответ[Response_];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ Результат = Тело[Response_];
Если ЗначениеЗаполнено(Результат) Тогда
@@ -1702,7 +1716,8 @@
Функция ПолучитьСоответствиеКартинки(Знач Картинка, Знач Параметры, Знач Вид)
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры, Вид);
- ОтветМассив = Ответ.Получить("response");
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ ОтветМассив = Тело.Получить("response");
Если Не ЗначениеЗаполнено(ОтветМассив) Или Не ТипЗнч(ОтветМассив) = Тип("Массив") Тогда
Возврат Ответ;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Viber/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Viber/Module.bsl
index d8aabfd909..fda5035334 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Viber/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_Viber/Module.bsl
@@ -197,6 +197,7 @@
Если Не ЗначениеЗаполнено(Размер) Тогда
Ответ = OPI_ЗапросыHTTP.Get(URL);
+ Ответ = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
Размер = Ответ.Размер();
КонецЕсли;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_YandexDisk/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_YandexDisk/Module.bsl
index 480583f30f..a1ef0196a3 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_YandexDisk/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_YandexDisk/Module.bsl
@@ -144,8 +144,9 @@
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_ЗапросыHTTP.PutСТелом(URL + Параметры, , Заголовки, Ложь);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- URLОтвета = Ответ[Href];
+ URLОтвета = Тело[Href];
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
Возврат Ответ;
@@ -229,8 +230,9 @@
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL + Параметры, , Заголовки, Ложь);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- URLОтвета = Ответ[Href];
+ URLОтвета = Тело[Href];
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
Возврат Ответ;
@@ -400,7 +402,8 @@
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL + Параметры, , Заголовки, Ложь);
- URLОтвета = Ответ[Href];
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
+ URLОтвета = Тело[Href];
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
Возврат Ответ;
@@ -699,8 +702,9 @@
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(Адрес + Параметры, , Заголовки, Ложь);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- URLОтвета = Ответ[Href];
+ URLОтвета = Тело[Href];
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
Возврат Ответ;
@@ -734,8 +738,9 @@
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_ЗапросыHTTP.PutСТелом(URL + Параметры, , Заголовки, Ложь);
+ Тело = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Ответ);
- URLОтвета = Ответ[Href];
+ URLОтвета = Тело[Href];
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
Возврат Ответ;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ЗапросыHTTP/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ЗапросыHTTP/Module.bsl
index a74f03818d..7c9f803bdb 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ЗапросыHTTP/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ЗапросыHTTP/Module.bsl
@@ -55,6 +55,8 @@
Если OPI_Инструменты.ЭтоOneScript() Тогда
+ // !IRPSkip
+
//@skip-check property-not-writable
//@skip-check bsl-legacy-check-static-feature-access
Обработки = Неопределено;
@@ -65,6 +67,7 @@
Иначе
#Если НаКлиенте Тогда
+ // !IRPSkip
HTTPКлиент = ПолучитьФорму("Обработка.OPI_HTTPКлиент.Форма.ОбъектКлиентскогоВызова");
#Иначе
HTTPКлиент = Обработки.OPI_HTTPКлиент.Создать(); // !OPI
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ПреобразованиеТипов/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ПреобразованиеТипов/Module.bsl
index b725169bc8..7336681589 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ПреобразованиеТипов/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_ПреобразованиеТипов/Module.bsl
@@ -59,15 +59,22 @@
Значение = ПолучитьДвоичныеДанныеИзСтроки(Значение);
Иначе
+
+ // !IRPSkip
ПолучитьСтроку(Значение);
+ // !IRPSkip
ПреобразоватьИсточникВЗначение(Значение, ПопыткаB64);
+
КонецЕсли;
Исключение
Если Безусловно Тогда
+
+ // !IRPSkip
ПолучитьСтроку(Значение);
Значение = ПолучитьДвоичныеДанныеИзСтроки(Значение);
+
Иначе
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
КонецЕсли;
@@ -83,11 +90,14 @@
КонецЕсли;
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
+ // !IRPSkip
ПолучитьДвоичныеДанные(Значение);
Возврат;
КонецЕсли;
ЗначениеУП = Значение;
+
+ // !IRPSkip
ВернутьУправляющиеПоследовательности(ЗначениеУП);
Файл = Новый Файл(ЗначениеУП);
@@ -127,6 +137,8 @@
КонецЕсли;
ЗначениеУП = Значение;
+
+ // !IRPSkip
ВернутьУправляющиеПоследовательности(ЗначениеУП);
Файл = Новый Файл(ЗначениеУП);
@@ -142,6 +154,7 @@
Или СтрНачинаетсяС(СокрЛ(ЗначениеУП), "https://")) Тогда
Значение = ПолучитьHttpКлиент().Get(ЗначениеУП);
+ Значение = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Значение);
Иначе
@@ -239,6 +252,8 @@
КонецЕсли;
ЗначениеУП = Значение;
+
+ // !IRPSkip
ВернутьУправляющиеПоследовательности(ЗначениеУП);
Файл = Новый Файл(ЗначениеУП);
@@ -253,6 +268,7 @@
Или СтрНачинаетсяС(СокрЛ(ЗначениеУП), "https://") Тогда
Значение = ПолучитьHttpКлиент().Get(ЗначениеУП);
+ Значение = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Значение);
ПолучитьСтроку(Значение);
Иначе
@@ -521,6 +537,8 @@
Процедура ПреобразоватьИсточникВЗначение(Значение, ПопыткаB64)
ЗначениеУП = Значение;
+
+ // !IRPSkip
ВернутьУправляющиеПоследовательности(ЗначениеУП);
Файл = Новый Файл(ЗначениеУП);
@@ -533,6 +551,7 @@
Или СтрНачинаетсяС(СокрЛ(ЗначениеУП), "https://") Тогда
Значение = ПолучитьHttpКлиент().Get(ЗначениеУП);
+ Значение = OPI_РасширенныйВызов.НормализоватьПромежуточныйРезультат(Значение);
Иначе
@@ -571,21 +590,27 @@
Если ЭтоOneScript() Тогда
Попытка
+ // !IRPSkip
// !OInt OPI_ЗапросыHTTP = Неопределено;
Возврат Неопределено; // !OPI
Исключение
+ // !IRPSkip
Возврат OPI_ЗапросыHTTP;
КонецПопытки;
+ // !IRPSkip
// !OInt ПутьКлиента = ПолучитьПутьHttpКлиента();
// !OInt Попытка ПодключитьСценарий(ПутьКлиента, "OPI_ЗапросыHTTP"); Исключение КонецПопытки;
+ // !IRPSkip
+
//@skip-check bsl-legacy-check-string-literal
//@skip-check bsl-legacy-check-method-for-statements-after-return
HttpКлиент = Новый("OPI_ЗапросыHTTP");
Возврат HttpКлиент;
Иначе
+ // !IRPSkip
Возврат OPI_ЗапросыHTTP; // !OPI
КонецЕсли;
diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl
index b3c9266f7d..d90a58bb15 100644
--- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl
+++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl
@@ -233,18 +233,20 @@
КонецФункции
-Процедура НормализоватьПромежуточныйРезультат(Результат) Экспорт
+Функция НормализоватьПромежуточныйРезультат(Знач Результат) Экспорт
НормализованныйРезультат = Неопределено;
Если OPI_Инструменты.ПолучитьИли(ПолучитьТекущиеНастройки(), "adv_response", Ложь)
И OPI_Инструменты.ПолеКоллекцииСуществует(Результат, "body", НормализованныйРезультат) Тогда
- Результат = НормализованныйРезультат;
+ Возврат НормализованныйРезультат;
КонецЕсли;
+
+ Возврат Результат;
-КонецПроцедуры
+КонецФункции
Процедура УдалитьНастройки() Экспорт
diff --git a/src/ru/BSL/Tests/src/CommonModules/OPIt_Bitrix24/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPIt_Bitrix24/Module.bsl
index 3bc213bdbf..4c3d917b1f 100644
--- a/src/ru/BSL/Tests/src/CommonModules/OPIt_Bitrix24/Module.bsl
+++ b/src/ru/BSL/Tests/src/CommonModules/OPIt_Bitrix24/Module.bsl
@@ -3532,7 +3532,9 @@
Процедура Bitrix24_СоздатьПользователя(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
- Почта = Строка(Новый УникальныйИдентификатор) + "@example.org";
+
+ Почта = "example@mail.ru";
+ Почта = Строка(Новый УникальныйИдентификатор) + "@mail.org"; // SKIP
// Полную структуру можно получить функцией ПолучитьСтруктуруПользователя
@@ -3546,7 +3548,8 @@
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
- Почта = Строка(Новый УникальныйИдентификатор) + "@example.org";
+
+ Почта = Строка(Новый УникальныйИдентификатор) + "@mail.org"; // SKIP
СтруктураПользователя = Новый Структура;
СтруктураПользователя.Вставить("EMAIL" , Почта);