Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 32 additions & 36 deletions src/v8runner.os
Original file line number Diff line number Diff line change
Expand Up @@ -490,66 +490,62 @@
КонецЕсли;

МассивКаталогов1С = Новый Массив;

МассивФайлов = Новый Массив;
Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл

Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть);

РезультатПоиска = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*");
//Если в данном каталоге установки платформы нет каталого с искомой версией не делать ничего, перейти к следующему возможному пути
//Если есть каталоги с искомой версией тогда добавить их в общий массив результатов поиска
Если НЕ РезультатПоиска.Количество() Тогда
Продолжить;
Иначе

Для Каждого Каталог ИЗ РезультатПоиска Цикл
МассивФайлов.Добавить(Каталог);
КонецЦикла;
//Зафиксировать возможный путь, как подтвержденный путь где есть версии по заданной маске.
ПодтвержденныйПуть = ВозможныйПуть;
КонецЕсли;

МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*");
Если МассивФайлов.Количество() = 0 Тогда
Лог.Отладка("Не найдено ни одного каталога с версией.");

Продолжить;
КонецЕсли;
Если МассивКаталогов1С = Неопределено Тогда
МассивКаталогов1С = МассивФайлов;
Иначе
Для каждого Файл Из МассивФайлов Цикл
МассивКаталогов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С <"+ВерсияПлатформы+">";
КонецЕсли;

Expand All @@ -559,14 +555,14 @@
Если НЕ КаталогУстановки.Существует() Тогда
КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64");
КонецЕсли;
НужныйПуть = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8");
НужныйФайлПлатформы = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8");
КонецЕсли;

Если Не НужныйПуть.Существует() Тогда
ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйПуть.ПолноеИмя+"> не существует";
Если Не НужныйФайлПлатформы.Существует() Тогда
ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйФайлПлатформы.ПолноеИмя+"> не существует";
КонецЕсли;

Возврат НужныйПуть.ПолноеИмя;
Возврат НужныйФайлПлатформы.ПолноеИмя;

КонецФункции

Expand Down