From fd03b537de521c19adc7be12662e79023c69052d Mon Sep 17 00:00:00 2001 From: Anton Titovets Date: Sun, 17 May 2026 20:12:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=81=20=D0=BD=D0=B5=D1=81=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D0=BC?= =?UTF-8?q?=D0=B8=20http-=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=B8=20adv=5Freponse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci/os/MainProcessingScript.os | 1 + .../IntermediateResultProcessingCheck.os | 118 ++++++++++++++++++ docs/ru/md/Start/1C-version.md | 44 +++++++ docs/ru/md/Start/Advanced-call.md | 2 +- docs/ru/md/Start/Backward-compatibility.md | 2 +- docs/ru/md/Start/Build-from-source.md | 2 +- docs/ru/md/Start/Component-requirements.md | 8 +- docs/ru/md/Start/Oscript-version.md | 2 +- .../src/CommonModules/OPI_Bitrix24/Module.bsl | 6 +- .../src/CommonModules/OPI_CDEK/Module.bsl | 20 +-- .../src/CommonModules/OPI_Dropbox/Module.bsl | 13 +- .../OPI_GoogleCalendar/Module.bsl | 16 ++- .../CommonModules/OPI_GoogleDrive/Module.bsl | 16 ++- .../src/CommonModules/OPI_GreenMax/Module.bsl | 4 +- .../CommonModules/OPI_Neocities/Module.bsl | 10 +- .../src/CommonModules/OPI_Notion/Module.bsl | 16 ++- .../src/CommonModules/OPI_S3/Module.bsl | 17 ++- .../src/CommonModules/OPI_Slack/Module.bsl | 11 +- .../src/CommonModules/OPI_Telegram/Module.bsl | 15 ++- .../src/CommonModules/OPI_VK/Module.bsl | 39 ++++-- .../src/CommonModules/OPI_Viber/Module.bsl | 1 + .../CommonModules/OPI_YandexDisk/Module.bsl | 15 ++- .../CommonModules/OPI_ЗапросыHTTP/Module.bsl | 3 + .../OPI_ПреобразованиеТипов/Module.bsl | 25 ++++ .../OPI_РасширенныйВызов/Module.bsl | 8 +- .../CommonModules/OPIt_Bitrix24/Module.bsl | 7 +- 26 files changed, 344 insertions(+), 77 deletions(-) create mode 100644 ci/os/internal/Classes/IntermediateResultProcessingCheck.os create mode 100644 docs/ru/md/Start/1C-version.md 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" , Почта);