From ef296b35306d5390b6fccd695b4d6ccde2f4df1a Mon Sep 17 00:00:00 2001 From: Anton Titovets Date: Mon, 11 May 2026 22:39:14 +0300 Subject: [PATCH] =?UTF-8?q?HTTP:=20=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20chunked=20upload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OPI_РасширенныйВызов/Module.bsl | 12 ++---- .../OPI_HTTPКлиент/ObjectModule.bsl | 41 +++++++++++-------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl index c024e5d98b..dadc7b1d32 100644 --- a/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl +++ b/src/ru/BSL/OpenIntegrations/src/CommonModules/OPI_РасширенныйВызов/Module.bsl @@ -72,15 +72,9 @@ ПараметрыЗадания.Добавить(НормализованныеНастройки); ПараметрыЗадания.Добавить(АдресРезультата); - Если OPI_Инструменты.ЭтоOneScript() Тогда - //@skip-check bsl-legacy-check-expression-type - Результат = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ВызватьСНастройкамиСлужебный", ПараметрыЗадания); - Иначе - - ФоновоеЗадание = ФоновыеЗадания.Выполнить("OPI_РасширенныйВызов.ВызватьСНастройкамиСлужебный", ПараметрыЗадания); - Результат = Новый Структура("ФоновоеЗадание,Адрес", ФоновоеЗадание, АдресРезультата); - - КонецЕсли; + // !OInt Результат = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ВызватьСНастройкамиСлужебный", ПараметрыЗадания); + ФоновоеЗадание = ФоновыеЗадания.Выполнить("OPI_РасширенныйВызов.ВызватьСНастройкамиСлужебный", ПараметрыЗадания); // !OPI + Результат = Новый Структура("ФоновоеЗадание,Адрес", ФоновоеЗадание, АдресРезультата); // !OPI Иначе diff --git a/src/ru/BSL/OpenIntegrations/src/DataProcessors/OPI_HTTPКлиент/ObjectModule.bsl b/src/ru/BSL/OpenIntegrations/src/DataProcessors/OPI_HTTPКлиент/ObjectModule.bsl index 8dbd3c75e7..382a988feb 100644 --- a/src/ru/BSL/OpenIntegrations/src/DataProcessors/OPI_HTTPКлиент/ObjectModule.bsl +++ b/src/ru/BSL/OpenIntegrations/src/DataProcessors/OPI_HTTPКлиент/ObjectModule.bsl @@ -91,6 +91,7 @@ Перем ЗапросФайлТела; // Путь к файлу с телом запроса Перем ЗапросПотокТела; // Поток тела запроса Перем ЗапросПотокЧтенияТела; // Поток чтения двоичных данных тела +Перем ЗапросКонтрольЧтения; // Число байт тела, которые были успешно отправлены Перем ЗапросЗаписьДанных; // Запись данных тела запроса Перем ЗапросЧтениеДанных; // Чтение данных тела запроса Перем ЗапросТипДанных; // MIME тип для Content-Type @@ -147,13 +148,14 @@ Инициализирован = Истина; Ошибка = Ложь; - ЗапросПараметрыURL = Новый Структура; - ЗапросТело = Неопределено; - ЗапросТелоКоллекция = Новый Структура; - ЗапросЗаголовки = Новый Соответствие; - ЗапросТаймаут = 3600; - ЗапросРазмерЧасти = 5242880; - Повторов = 0; + ЗапросПараметрыURL = Новый Структура; + ЗапросТело = Неопределено; + ЗапросТелоКоллекция = Новый Структура; + ЗапросЗаголовки = Новый Соответствие; + ЗапросТаймаут = 3600; + ЗапросРазмерЧасти = 5242880; + ЗапросКонтрольЧтения = 0; + Повторов = 0; ЗапросТипУстановленВручную = Ложь; @@ -1510,22 +1512,21 @@ Повторов = 0; ОбщийРазмер = ЗапросТело.Размер(); - ЗапросПотокТела = ЗапросТело.ОткрытьПотокДляЧтения(); - ЗапросЧтениеДанных = Новый ЧтениеДанных(ЗапросПотокТела); + ЗапросКонтрольЧтения = 0; КБайт = 1024; МБайт = КБайт * КБайт; - Пока ЗапросПотокТела.ТекущаяПозиция() < ОбщийРазмер Цикл + Пока ЗапросКонтрольЧтения < ОбщийРазмер Цикл - ОтправитьЧасть(ЗапросПотокТела.ТекущаяПозиция(), РазмерЧасти, Метод); + ОтправитьЧасть(ЗапросКонтрольЧтения, РазмерЧасти, Метод); Проверка = ПроверитьЗагрузкуЧасти(); Если Проверка <> Неопределено Тогда Возврат Проверка; КонецЕсли; - OPI_Инструменты.ИнформацияОПрогрессе(ЗапросПотокТела.ТекущаяПозиция(), ОбщийРазмер, "МБ", МБайт); + OPI_Инструменты.ИнформацияОПрогрессе(ЗапросКонтрольЧтения, ОбщийРазмер, "МБ", МБайт); // !OInt ВыполнитьСборкуМусора(); @@ -1561,8 +1562,13 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод); - ЗапросПотокЧтенияТела = ?(ЗапросПотокЧтенияТела = Неопределено, ЗапросТело.ОткрытьПотокДляЧтения(), ЗапросПотокЧтенияТела); - ЗапросЧтениеДанных = ?(ЗапросЧтениеДанных = Неопределено, Новый ЧтениеДанных(ЗапросПотокЧтенияТела), ЗапросЧтениеДанных); + ЗапросПотокЧтенияТела = ?(ЗапросПотокЧтенияТела = Неопределено + , ЗапросТело.ОткрытьПотокДляЧтения() + , ЗапросПотокЧтенияТела); + + ЗапросЧтениеДанных = ?(ЗапросЧтениеДанных = Неопределено + , Новый ЧтениеДанных(ЗапросПотокЧтенияТела) + , ЗапросЧтениеДанных); Если Не ЗапросПотокЧтенияТела.ТекущаяПозиция() = ПозицияНачала Тогда ЗапросПотокЧтенияТела.Перейти(ПозицияНачала, ПозицияВПотоке.Начало); @@ -2569,14 +2575,14 @@ НеобходимоЧастей = 2; Если МассивИнформации.Количество() = НеобходимоЧастей Тогда - ЗапросПотокЧтенияТела.Перейти(Число(МассивИнформации[1]) + 1 , ПозицияВПотоке.Начало); + ЗапросКонтрольЧтения = Число(МассивИнформации[1]) + 1; Иначе - ЗапросПотокЧтенияТела.Перейти(ЗапросТелоТекущейОтправки.Размер(), ПозицияВПотоке.Текущая); + ЗапросКонтрольЧтения = ЗапросКонтрольЧтения + ЗапросТелоТекущейОтправки.Размер(); КонецЕсли; Иначе - ЗапросПотокЧтенияТела.Перейти(ЗапросТелоТекущейОтправки.Размер(), ПозицияВПотоке.Текущая); + ЗапросКонтрольЧтения = ЗапросКонтрольЧтения + ЗапросТелоТекущейОтправки.Размер(); КонецЕсли; @@ -3479,6 +3485,7 @@ ЗапросФайлТела = Неопределено; ЗапросПотокТела = Неопределено; ЗапросПотокЧтенияТела = Неопределено; + ЗапросКонтрольЧтения = Неопределено; ЗапросЗаписьДанных = Неопределено; ЗапросЧтениеДанных = Неопределено; ЗапросТипДанных = Неопределено;