Skip to content
New issue

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

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

Already on GitHub? # 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

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

No branches or pull requests

3 participants