1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-13 20:05:19 +02:00

Преобразование OPI -> OInt (workflow)

This commit is contained in:
Vitaly the Alpaca
2024-05-30 18:01:01 +00:00
committed by Vitaly the Alpaca (bot)
parent 395d4914a7
commit 849d659437
4 changed files with 74 additions and 20 deletions

View File

@@ -540,14 +540,12 @@
Если ЗначениеЗаполнено(Файл) Тогда Если ЗначениеЗаполнено(Файл) Тогда
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); РазмерЧасти = 268435457;
Размер = OPI_Инструменты.ПреобразоватьДанныеСПолучениемРазмера(Файл, РазмерЧасти);
СоответствиеФайла.Вставить(Файл, MIME); СоответствиеФайла.Вставить(Файл, MIME);
Размер = Файл.Размер(); Если Размер < РазмерЧасти И ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
РазмерЧасти = 268435456;
РазмерЧасти = РазмерЧасти + 1;
Если Размер < РазмерЧасти Тогда
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор); Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
Иначе Иначе
Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор); Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор);
@@ -615,11 +613,12 @@
ТекущаяПозиция = 0; ТекущаяПозиция = 0;
ОбщийРазмер = Двоичные.Размер(); ОбщийРазмер = Двоичные.Размер();
СтрОбщийРазмер = OPI_Инструменты.ЧислоВСтроку(ОбщийРазмер); СтрОбщийРазмер = OPI_Инструменты.ЧислоВСтроку(ОбщийРазмер);
ЧтениеДанных = Новый ЧтениеДанных(Двоичные);
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
Пока ПрочитаноБайт < ОбщийРазмер Цикл Пока ПрочитаноБайт < ОбщийРазмер Цикл
ЧтениеДанных = Новый ЧтениеДанных(Двоичные); ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
ПрочитаноБайт = ЧтениеДанных.Пропустить(ТекущаяПозиция);
Результат = ЧтениеДанных.Прочитать(РазмерЧасти); Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные(); ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
РазмерТекущих = ТекущиеДанные.Размер(); РазмерТекущих = ТекущиеДанные.Размер();

View File

@@ -452,9 +452,14 @@
СоздатьКаталог(ПутьЛоговБиблиотеки); СоздатьКаталог(ПутьЛоговБиблиотеки);
КонецЕсли; КонецЕсли;
ПутьКФайлу = ПутьЛоговБиблиотеки + "/" + Метод + ".log";
ФайлЛога = Новый Файл(ПутьКФайлу);
Если Не ФайлЛога.Существует() Тогда
ДокументЛога = Новый ТекстовыйДокумент; ДокументЛога = Новый ТекстовыйДокумент;
ДокументЛога.УстановитьТекст(Данные); ДокументЛога.УстановитьТекст(Данные);
ДокументЛога.Записать(ПутьЛоговБиблиотеки + "/" + Метод + ".log"); ДокументЛога.Записать(ПутьКФайлу);
КонецЕсли;
Исключение Исключение
Сообщить("Не удалось записать файл лога!: " + ОписаниеОшибки()); Сообщить("Не удалось записать файл лога!: " + ОписаниеОшибки());

View File

@@ -51,12 +51,7 @@
ИначеЕсли СтрНайти(Значение, "//") Тогда ИначеЕсли СтрНайти(Значение, "//") Тогда
ИВФ = ПолучитьИмяВременногоФайла(); Значение = OPI_Инструменты.Get(Значение);
КопироватьФайл(Значение, ИВФ);
Значение = Новый ДвоичныеДанные(ИВФ);
УдалитьФайлы(ИВФ);
Иначе Иначе
@@ -72,6 +67,27 @@
КонецПроцедуры КонецПроцедуры
Процедура ПолучитьДвоичныеИлиПоток(Значение) Экспорт
Если Значение = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
ПолучитьДвоичныеДанные(Значение);
Возврат;
КонецЕсли;
Файл = Новый Файл(Значение);
Если Файл.Существует() Тогда
Значение = Новый ФайловыйПоток(Значение, РежимОткрытияФайла.Открыть, ДоступКФайлу.Чтение);
Иначе
ПолучитьДвоичныеДанные(Значение);
КонецЕсли;
КонецПроцедуры
Процедура ПолучитьКоллекцию(Значение) Экспорт Процедура ПолучитьКоллекцию(Значение) Экспорт
Если Значение = Неопределено Тогда Если Значение = Неопределено Тогда

View File

@@ -385,6 +385,40 @@
КонецФункции КонецФункции
Функция ПреобразоватьДанныеСПолучениемРазмера(Данные, Знач МинимальныйРазмерДляПотока = 0) Экспорт
Размер = 0;
Если ТипЗнч(Данные) = Тип("Строка") Тогда
ФайлНаДиске = Новый Файл(Данные);
Если ФайлНаДиске.Существует() Тогда
Размер = ФайлНаДиске.Размер();
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
Размер = Данные.Размер();
КонецЕсли;
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
Размер = Данные.Размер();
КонецЕсли;
Если ЗначениеЗаполнено(МинимальныйРазмерДляПотока) Тогда
Если Размер < МинимальныйРазмерДляПотока Тогда
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеИлиПоток(Данные);
КонецЕсли;
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеИлиПоток(Данные);
КонецЕсли;
Возврат Размер;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт Процедура ЗначениеВМассив(Значение) Экспорт
Значение_ = Новый Массив; Значение_ = Новый Массив;