Skip to content

Commit 1a3526d

Browse files
committed
Merge remote-tracking branch 'origin/develop' into develop
2 parents 9c245c0 + 3855011 commit 1a3526d

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

install/package-loader.os

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
// Пояснения по переменным даны в конце модуля
1+
// Пояснения по переменным даны в конце модуля
22
Перем ПоказатьСообщенияЗагрузки;
33
Перем ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей;
44

5+
Перем КэшМодулей;
6+
57
Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ)
68
Вывести("
79
|ПриЗагрузкеБиблиотеки " + Путь);
@@ -66,7 +68,7 @@
6668
Если Не ПустаяСтрока(Идентификатор) Тогда
6769
Вывести(СтрШаблон(" модуль %1, файл %2", Идентификатор, ФайлКласса.ПолноеИмя));
6870
Попытка
69-
ДобавитьМодуль(ФайлКласса.ПолноеИмя, Идентификатор);
71+
ДобавитьМодульЕслиРанееНеДобавляли(ФайлКласса.ПолноеИмя, Идентификатор);
7072
Исключение
7173
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
7274
ВызватьИсключение;
@@ -145,7 +147,7 @@
145147
Вывести(СтрШаблон(" модуль (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя));
146148
СтандартнаяОбработка = Ложь;
147149
Попытка
148-
ДобавитьМодуль(Файл.ПолноеИмя, Файл.ИмяБезРасширения);
150+
ДобавитьМодульЕслиРанееНеДобавляли(Файл.ПолноеИмя, Файл.ИмяБезРасширения);
149151
Исключение
150152
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
151153
ВызватьИсключение;
@@ -187,6 +189,21 @@
187189
КонецЕсли;
188190
КонецПроцедуры
189191

192+
Процедура ДобавитьМодульЕслиРанееНеДобавляли(ПутьФайла, ИмяМодуля)
193+
Вывести("Добавляю модуль, если ранее не добавляли " + ИмяМодуля);
194+
195+
МодульУжеЕсть = КэшМодулей.Найти(ИмяМодуля) <> Неопределено;
196+
Если Не МодульУжеЕсть Тогда
197+
198+
Вывести("Добавляю модуль, т.к. он не найден - " + ИмяМодуля);
199+
ДобавитьМодуль(ПутьФайла, ИмяМодуля);
200+
КэшМодулей.Добавить(ИмяМодуля);
201+
Иначе
202+
Вывести("Пропускаю загрузку модуля " + ИмяМодуля);
203+
204+
КонецЕсли;
205+
КонецПроцедуры
206+
190207
Процедура Вывести(Знач Сообщение)
191208
Если ПоказатьСообщенияЗагрузки Тогда
192209
Сообщить(Сообщение);
@@ -225,4 +242,6 @@
225242
"OSLIB_LOADER_DUPLICATES", Ложь);
226243

227244
// для установки других значений переменных среды и запуска скриптов можно юзать следующую командную строку
228-
// (set OSLIB_LOADER_TRACE=1) && (oscript .\tasks\test.os)
245+
// (set OSLIB_LOADER_TRACE=1) && (oscript .\tasks\test.os)
246+
247+
КэшМодулей = Новый Массив;

0 commit comments

Comments
 (0)