diff --git a/src/v8runner.os b/src/v8runner.os index d913f0e..17158c5 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -490,29 +490,13 @@ КонецЕсли; МассивКаталогов1С = Новый Массив; - - МассивФайлов = Новый Массив; Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть); - РезультатПоиска = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); - //Если в данном каталоге установки платформы нет каталого с искомой версией не делать ничего, перейти к следующему возможному пути - //Если есть каталоги с искомой версией тогда добавить их в общий массив результатов поиска - Если НЕ РезультатПоиска.Количество() Тогда - Продолжить; - Иначе - - Для Каждого Каталог ИЗ РезультатПоиска Цикл - МассивФайлов.Добавить(Каталог); - КонецЦикла; - //Зафиксировать возможный путь, как подтвержденный путь где есть версии по заданной маске. - ПодтвержденныйПуть = ВозможныйПуть; - КонецЕсли; - + МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); Если МассивФайлов.Количество() = 0 Тогда Лог.Отладка("Не найдено ни одного каталога с версией."); - Продолжить; КонецЕсли; Если МассивКаталогов1С = Неопределено Тогда @@ -520,36 +504,48 @@ Иначе Для каждого Файл Из МассивФайлов Цикл МассивКаталогов1С.Добавить(Файл); + Лог.Отладка("Нашел платформу 1С %1", Файл.Имя); КонецЦикла; КонецЕсли; КонецЦикла; - НужныйПуть = Неопределено; + НужныйФайлПлатформы = Неопределено; - ИменаВерсий = Новый Массив; - Для Каждого ЭлементМассива Из МассивФайлов Цикл - правыйСимвол = Прав(ЭлементМассива.Имя,1); + МассивКаталоговВерсий = Новый Массив; + Для Каждого ЭлементМассива Из МассивКаталогов1С Цикл + правыйСимвол = Прав(ЭлементМассива.Имя, 1); Если правыйСимвол < "0" или правыйСимвол > "9" Тогда Продолжить; КонецЕсли; - ИменаВерсий.Добавить(ЭлементМассива.Имя); + МассивКаталоговВерсий.Добавить(ЭлементМассива); КонецЦикла; - Если ИменаВерсий.Количество() > 0 Тогда - МаксВерсия = ИменаВерсий[0]; - Для Сч = 1 По ИменаВерсий.Количество()-1 Цикл - //Прежде чем проверять версию на максимум проверить ее на наличие исполняемого файла толстого клиента 1cv8.exe - НужныйПуть = Новый Файл(ОбъединитьПути(ПодтвержденныйПуть, ИменаВерсий[Сч], "bin\1cv8.exe")); - Если НужныйПуть.Существует() И МаксВерсия < ИменаВерсий[Сч] Тогда - МаксВерсия = ИменаВерсий[Сч]; + Если МассивКаталоговВерсий.Количество() > 0 Тогда + МаксВерсия = МассивКаталоговВерсий[0].Имя; + НужныйФайлПлатформы = Новый Файл(ОбъединитьПути(МассивКаталоговВерсий[0].ПолноеИмя, "bin", "1cv8.exe")); + + Для Сч = 1 По МассивКаталоговВерсий.ВГраница() Цикл + ТекущаяВерсия = МассивКаталоговВерсий[Сч].Имя; + Если МаксВерсия < ТекущаяВерсия Тогда + ПутьБин = ОбъединитьПути(МассивКаталоговВерсий[Сч].ПолноеИмя, "bin"); + ПроверяемыйФайл = Новый Файл(ОбъединитьПути(ПутьБин, "1cv8.exe")); + Если НЕ ПроверяемыйФайл.Существует() Тогда + Продолжить; + КонецЕсли; + + МаксВерсия = ТекущаяВерсия; + НужныйФайлПлатформы = ПроверяемыйФайл; КонецЕсли; КонецЦикла; - НужныйПуть = Новый Файл(ОбъединитьПути(ПодтвержденныйПуть, МаксВерсия, "bin\1cv8.exe")); - Лог.Отладка("Версия найдена: " + НужныйПуть.ПолноеИмя); + Если НужныйФайлПлатформы.Существует() Тогда + Лог.Отладка("Версия найдена: " + НужныйФайлПлатформы.ПолноеИмя); + Иначе + НужныйФайлПлатформы = Неопределено; + КонецЕсли; КонецЕсли; - Если НужныйПуть = Неопределено Тогда + Если НужныйФайлПлатформы = Неопределено Тогда ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; КонецЕсли; @@ -559,14 +555,14 @@ Если НЕ КаталогУстановки.Существует() Тогда КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); КонецЕсли; - НужныйПуть = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); + НужныйФайлПлатформы = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); КонецЕсли; - Если Не НужныйПуть.Существует() Тогда - ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйПуть.ПолноеИмя+"> не существует"; + Если Не НужныйФайлПлатформы.Существует() Тогда + ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйФайлПлатформы.ПолноеИмя+"> не существует"; КонецЕсли; - Возврат НужныйПуть.ПолноеИмя; + Возврат НужныйФайлПлатформы.ПолноеИмя; КонецФункции