mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-03-25 21:39:21 +02:00
RC5 для Linux
This commit is contained in:
parent
6a99135061
commit
1d3a97a9b1
@ -106,6 +106,9 @@
|
||||
КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Модули"));
|
||||
КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Modules"));
|
||||
|
||||
КаталогиВК = Новый Массив;
|
||||
КаталогиВК.Добавить(ОбъединитьПути(Путь, "Components"));
|
||||
КаталогиВК.Добавить(ОбъединитьПути(Путь, "Компоненты"));
|
||||
|
||||
Для Каждого мКаталог Из КаталогиКлассов Цикл
|
||||
|
||||
@ -118,6 +121,12 @@
|
||||
ОбработатьКаталогМодулей(мКаталог, СтандартнаяОбработка, Отказ);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого мКаталог Из КаталогиВК Цикл
|
||||
|
||||
ОбработатьКаталогВК(мКаталог, СтандартнаяОбработка, Отказ);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -161,6 +170,75 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// По соглашению ВК должны лежать в подпапках, названных, как значения перечисления ТипПлатформы.
|
||||
// Имя файла, являющегося внешней компонентой должно иметь префикс 1script_
|
||||
// Components
|
||||
// net4 (фреймворк .net48
|
||||
// 1script_barcode.dll
|
||||
// dotnet (.net современных версий, он же netcore)
|
||||
// 1script_barcode.dll
|
||||
// NativeApi
|
||||
// Windows_x86
|
||||
// 1script_barcode.dll
|
||||
// Windows_x86_64
|
||||
// 1script_barcode.dll
|
||||
// Linux_x86_64
|
||||
// 1script_barcode.so
|
||||
// остальные не поддерживаются (ЖВПР)
|
||||
//
|
||||
Процедура ОбработатьКаталогВК(Знач Путь, СтандартнаяОбработка, Отказ)
|
||||
|
||||
СИ = Новый СистемнаяИнформация();
|
||||
МажорнаяВерсия = Лев(СИ.Версия,1);
|
||||
|
||||
Если МажорнаяВерсия = "1" Тогда
|
||||
ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "net4"));
|
||||
ИначеЕсли МажорнаяВерсия = "2" Тогда
|
||||
ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "dotnet"));
|
||||
Иначе
|
||||
Вывести("Неизвестная мажорная версия системы: " + МажорнаяВерсия);
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьКомпонентыNativeApi(Путь);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьБиблиотекиCLR(Путь)
|
||||
КандидатыВКомпоненты = НайтиФайлы(Путь, "1script_*.dll");
|
||||
Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
|
||||
Если Не Кандидат.ЭтоФайл() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Вывести("Загружаю файл " + Кандидат.Имя);
|
||||
ЗагрузитьБиблиотеку(Кандидат.ПолноеИмя);
|
||||
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьКомпонентыNativeApi(Путь)
|
||||
СИ = Новый СистемнаяИнформация;
|
||||
ИмяПодкаталога = ОбъединитьПути(Путь, Строка(СИ.ТипПлатформы));
|
||||
Вывести("Ищу внешние компоненты в каталоге " + Путь);
|
||||
|
||||
#Если Windows Тогда
|
||||
Расширение = ".dll";
|
||||
#Иначе
|
||||
Расширение = ".so";
|
||||
#КонецЕсли
|
||||
|
||||
КандидатыВКомпоненты = НайтиФайлы(ИмяПодкаталога, "1script_*"+Расширение);
|
||||
Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
|
||||
Если Не Кандидат.ЭтоФайл() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Вывести("Загружаю файл " + Кандидат.Имя);
|
||||
ПодключитьВнешнююКомпоненту(Кандидат.ПолноеИмя, Кандидат.Имя, ТипВнешнейКомпоненты.Native);
|
||||
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьКлассЕслиРанееНеДобавляли(ПутьФайла, ИмяКласса)
|
||||
Вывести("Добавляю класс, если ранее не добавляли " + ИмяКласса);
|
||||
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
|
||||
@ -171,13 +249,14 @@
|
||||
|
||||
КлассУжеЕсть = Ложь;
|
||||
Попытка
|
||||
Объект = Новый(ИмяКласса);
|
||||
КлассУжеЕсть = Истина;
|
||||
Исключение
|
||||
СообщениеОшибки = ОписаниеОшибки();
|
||||
ИскомаяОшибка = СтрШаблон("Конструктор не найден (%1)", ИмяКласса);
|
||||
КлассУжеЕсть = СтрНайти(СообщениеОшибки, ИскомаяОшибка) = 0;
|
||||
КонецПопытки;
|
||||
ИзвестныйТип = Тип(ИмяКласса);
|
||||
КлассУжеЕсть = Истина;
|
||||
Исключение
|
||||
СообщениеОшибки = ОписаниеОшибки();
|
||||
ШаблонОшибки = НСтр("ru = 'Тип не зарегистрирован (%1)';en = 'Type is not registered (%1)'");
|
||||
ИскомаяОшибка = СтрШаблон(ШаблонОшибки, ИмяКласса);
|
||||
КлассУжеЕсть = СтрНайти(СообщениеОшибки, ИскомаяОшибка) = 0;
|
||||
КонецПопытки;
|
||||
Если Не КлассУжеЕсть Тогда
|
||||
|
||||
Вывести("Добавляю класс, т.к. он не найден - " + ИмяКласса);
|
||||
|
Loading…
x
Reference in New Issue
Block a user