1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-26 05:37:27 +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

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

View File

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

View File

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

View File

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