Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не найден путь к платформе 8.3 на версии пакета 0.6 #26

Open
EvilBeaver opened this issue Jan 31, 2017 · 7 comments

Comments

@EvilBeaver
Copy link
Member

Перенесено из EvilBeaver/OneScript#399

@adapter
#Использовать v8runner
Конфигуратор = Новый УправлениеКонфигуратором();

и сразу ошибка
{Модуль C:\Program Files (x86)\OneScript\lib\v8runner\src\v8runner.os / Ошибка в строке: 534 / Не найден путь к платформе 1С <8.3>}

была версия библиотеки 0.4.0, обновил на 0.6.0 и не помогло. Я что то делаю не так?

@EvilBeaver
Copy link
Member Author

Возможно, связано с #10.

Призываю на помощь @artbear, @nixel2007

@AdapterBatareev
Copy link

Немножко поправил

``
//////////////////////////////////////////////////
// Вспомогательные и настроечные функции

Функция ПолучитьПутьКВерсииПлатформы(Знач ВерсияПлатформы) Экспорт

Если Лев(ВерсияПлатформы, 2) <> "8." Тогда
	ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">";
КонецЕсли;

Если ЭтоWindows = Истина Тогда

	СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, ".");
	Если СписокСтрок.Количество() < 2 Тогда
		ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]";
	КонецЕсли;
	
	КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows();
	
	Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда
		Лог.Отладка("В конфигах стартера не найдены пути установки. Пробую стандартные пути наугад.");
		файлProgramFiles = Новый Файл("C:\Program Files (x86)\");
		Если Не файлProgramFiles.Существует() Тогда
			файлProgramFiles = Новый Файл("C:\Program Files\");
			Если Не файлProgramFiles.Существует() Тогда
				ВызватьИсключение "Не обнаружено установленных версий платформы 1С";
			КонецЕсли;
		КонецЕсли;
		
		КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv8"));
		КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv82"));
		
	КонецЕсли;
	
	МассивКаталогов1С = Новый Массив;
	Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл
	
		Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть);
		
		МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*");
		Если МассивФайлов.Количество() = 0 Тогда
			НомерСлеша = СтрНайти(ВозможныйПуть,"\",НаправлениеПоиска.FromEnd);
			Версия = Сред(ВозможныйПуть,НомерСлеша);
			Лог.Отладка("Не найдено ни одного каталога с версией. "+Версия);
			Продолжить;
		КонецЕсли;
		// Если МассивКаталогов1С = Неопределено Тогда
		// 	МассивКаталогов1С = МассивФайлов;
		// Иначе
			Для каждого Файл1С Из МассивФайлов Цикл
				МассивКаталогов1С.Добавить(Файл1С);
			КонецЦикла;
		//КонецЕсли;
	КонецЦикла;

	НужныйПуть = Неопределено;

	//ИменаВерсий = Новый Массив;
	МаксВерсия = МассивКаталогов1С[0].Имя;
	ТекПуть = МассивКаталогов1С[0].ПолноеИмя;
	Для Каждого ЭлементМассива Из МассивКаталогов1С Цикл
		правыйСимвол = Прав(ЭлементМассива.Имя,1);
		Если правыйСимвол < "0" или правыйСимвол > "9" Тогда
			Продолжить;
		КонецЕсли;
		//ИменаВерсий.Добавить(ЭлементМассива.Имя);
		ТекВерсия = ЭлементМассива.Имя;
		Если МаксВерсия < ТекВерсия Тогда
			МаксВерсия = ТекВерсия;
			ТекПуть = ЭлементМассива.ПолноеИмя;
		КонецЕсли;
	КонецЦикла;
	НужныйПуть = Новый Файл(ОбъединитьПути(ТекПуть, "bin\1cv8.exe"));
	Лог.Отладка("Версия найдена: " + НужныйПуть.ПолноеИмя);

	// Если ИменаВерсий.Количество() > 0 Тогда
	// 	МаксВерсия = ИменаВерсий[0];
	// 	Для Сч = 1 По ИменаВерсий.Количество()-1 Цикл
	// 		Если МаксВерсия < ИменаВерсий[Сч] Тогда
	// 			МаксВерсия = ИменаВерсий[Сч];
	// 		КонецЕсли;
	// 	КонецЦикла;
		
	// 	ВозможныйПуть = МассивКаталогов1С.Найти()
	// 	НужныйПуть = Новый Файл(ОбъединитьПути(ВозможныйПуть, МаксВерсия, "bin\1cv8.exe"));
	// 	Лог.Отладка("Версия найдена: " + НужныйПуть.ПолноеИмя);
	// КонецЕсли;
	
	Если НужныйПуть = Неопределено Тогда
		ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">";
	КонецЕсли;
	
Иначе
	// help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart.
	КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386");
	Если НЕ КаталогУстановки.Существует() Тогда
		КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64");
	КонецЕсли;
	НужныйПуть = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8");
КонецЕсли;

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

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

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

Но конечно надо глубже копаться. Вывод отладки:

running command> oscript -encoding=utf-8 d:\Git\osTest\hooks\unpack.os
ОТЛАДКА - Читаю конфигурационный файл C:\ProgramData\1C\1CEStart\1CEStart.cfg.
ОТЛАДКА - Читаю конфигурационный файл C:\Users\Bahtyreev_AV\AppData\Roaming\1C\1CEStart\1CEStart.cfg.
ОТЛАДКА - Выполняю попытку поиска версии в каталоге C:\Program Files (x86)\1cv8
ОТЛАДКА - Выполняю попытку поиска версии в каталоге C:\Program Files (x86)\1cv82
ОТЛАДКА - Не найдено ни одного каталога с версией. \1cv82
ОТЛАДКА - Версия найдена: C:\Program Files (x86)\1cv8\8.3.8.2088\bin\1cv8.exe
ОТЛАДКА - Читаю конфигурационный файл C:\ProgramData\1C\1CEStart\1CEStart.cfg.
ОТЛАДКА - Читаю конфигурационный файл C:\Users\Bahtyreev_AV\AppData\Roaming\1C\1CEStart\1CEStart.cfg.
ОТЛАДКА - Выполняю попытку поиска версии в каталоге C:\Program Files (x86)\1cv8
ОТЛАДКА - Не найдено ни одного каталога с версией. \1cv8
ОТЛАДКА - Выполняю попытку поиска версии в каталоге C:\Program Files (x86)\1cv82
ОТЛАДКА - Версия найдена: C:\Program Files (x86)\1cv82\8.2.19.116\bin\1cv8.exe

Зачем то два раза ищется. Надо оптимизировать

@EvilBeaver
Copy link
Member Author

Это лучше сделать сразу пулл-реквестом, чтобы изменения автоматом применить. А заодно себя в историю коммитов внесете.

@AdapterBatareev
Copy link

для пул реквеста лучше сначала оптимизировать код в библиотеке, а это больше чем залатать одну функцию на коленке.

@artbear
Copy link
Member

artbear commented Feb 1, 2017

@adapter что за оптимизация кода?
предложи свой вариант в пулл-реквесте, т.к. проще обсуждать что-то готовое, чем просто размышления :)

@EvilBeaver
Copy link
Member Author

@adapter давай начнем с пулреквеста, залатывающего на коленке, а после планомерно улучшим. Сделаешь PR?

@EvilBeaver
Copy link
Member Author

@adapter up

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants