Skip to content

Conversation

AlexPCRus
Copy link
Contributor

При использовании vanessa runner в случае если передаваемая в параметрах версия платформы отсутствует, то используется одна из других установленных версий, тогда как логичнее было бы выдавать сообщение об ошибке.
Это происходит из-за того что при инициализации ищется любая установленная версия платформы 8.3.

nixel2007 and others added 7 commits February 26, 2020 12:42
Убрал лишние параметры для обновления БД хранилища
* Fix oscript-library#127. Исправлена опечатка

* Добавлен вывод гиперссылок для комментариев в хранилище (oscript-library#124)

* Добавлен вывод гиперссылок для комментариев

В версии 8.3.17 добавлен ключ -IncludeCommentLinesWithDoubleSlash для /ConfigurationRepositoryReport.

oscript-library#122

* Объявление функции экспортной

Co-authored-by: Соколов Василий <abirambul@yandex.ru>

* Не загружались расширения в режиме обновления БД - перенос в ветку девелоп (oscript-library#128)

* Убрал лишние параметры для обновления БД хранилища
описано тут oscript-library#125

* Не загружались расширения в режиме обновления БД

closes oscript-library#125
closes vanessa-opensource/vanessa-runner#400

Co-authored-by: Nikita Gryzlov <nixel2007@gmail.com>
Co-authored-by: Andrei Ovsiankin <ovsiankin.aa@gmail.com>
Co-authored-by: mors <mors@pr365.ru>

* установил номер версии + увеличил зависимости

Co-authored-by: Nikita Gryzlov <nixel2007@gmail.com>
Co-authored-by: abirambul <abirambul@gmail.com>
Co-authored-by: Соколов Василий <abirambul@yandex.ru>
Co-authored-by: Andrei Ovsiankin <ovsiankin.aa@gmail.com>
Co-authored-by: mors <mors@pr365.ru>
…ъекта для возможности передавать желаемую версию платформы
@AlexPCRus AlexPCRus changed the base branch from master to develop January 18, 2021 15:50
@EvilBeaver
Copy link
Member

Все ок, только не пойму, откуда столько сторонних изменений от @artbear и @nixel2007. Как сделать, чтобы в PR были только коммиты, присущие ему?

@nixel2007 nixel2007 self-requested a review January 19, 2021 07:37
@AlexPCRus
Copy link
Contributor Author

Все ок, только не пойму, откуда столько сторонних изменений от @artbear и @nixel2007. Как сделать, чтобы в PR были только коммиты, присущие ему?

Я базовую ветку менял, может в этом причина. Могу заново PR сделать, а этот закрыть.

Copy link
Member

@nixel2007 nixel2007 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Я не совсем понимаю, где здесь сообщение об ошибке. Нет ни вывода лога, ни выброса исключения.
  2. Установка версии платформы есть через отдельный сеттер, не совсем понимаю, зачем это делать в конструкторе.
  3. Перед выполнением команд вызывается метод ПроверитьВозможностьВыполненияКоманды, который в том числе проверяет заполненность пути к платформе. Можно вынести из него проверку на заполненности пути к платформе в сеттер. Тогда можно будет не менять апи конструктора, просто сеттер по версии платформы начнет бросать исключение.

@EvilBeaver
Copy link
Member

Я проглядел конструктор. Да, не надо менять конструктор, лучше просто встроиться в стандартный функционал установки искомой версии.

@AlexPCRus
Copy link
Contributor Author

AlexPCRus commented Jan 19, 2021

  1. Я не совсем понимаю, где здесь сообщение об ошибке. Нет ни вывода лога, ни выброса исключения.
  2. Установка версии платформы есть через отдельный сеттер, не совсем понимаю, зачем это делать в конструкторе.
  3. Перед выполнением команд вызывается метод ПроверитьВозможностьВыполненияКоманды, который в том числе проверяет заполненность пути к платформе. Можно вынести из него проверку на заполненности пути к платформе в сеттер. Тогда можно будет не менять апи конструктора, просто сеттер по версии платформы начнет бросать исключение.

Дело в том, что инициализация выполняется командой Инициализация() внутри которой выполняется поиск любой установленной версии платформы 8.3 вне зависимости от того какая версия указана в параметрах. И если будет найдена любая установленная версия, а требуемой версии не будет установлено на компьютере, то для выполнения команд будет использована она, что противоречит переданным параметрам на мой взгляд. Если инициализировать переданной в параметрах версией сразу, то ошибку в случае ее отсутствия выкинет v8runner позже.

Может быть вместе с выводом в отладку кидать исключения прямо в инициализации?
Лог.Ошибка("Не найдена платформа " + ВерсияПлатформы); ВызватьИсключение "Не найдена платформа " + ВерсияПлатформы;
и вывод будет вроде этого:
vanessa-runner v1.10.0
ОТЛАДКА - [oscript.lib.v8runner] - Ищу платформу 8.3.20
ОШИБКА - [oscript.lib.v8runner] - Не найдена платформа 8.3.20
КРИТИЧНАЯОШИБКА - {Модуль C:\Program Files\OneScript\lib\vanessa-runner\oscript_modules\v8runner\src\v8runner.os / Ошибка в строке: 2154 / Не найдена платформа 8.3.20}

@nixel2007
Copy link
Member

И если будет найдена любая установленная версия, а требуемой версии не будет установлено на компьютере, то для выполнения команд будет использована она, что противоречит переданным параметрам на мой взгляд.

я вот этот тезис не понимаю. vanessa-runner у экземпляра УправлениеКонфигуратором вызывает метод установки версии платформы. v8runner будет пытаться ее найти и если не найдет, сразу из сеттера выкинет исключение. откуда противоречие?

@AlexPCRus
Copy link
Contributor Author

AlexPCRus commented Jan 22, 2021

Пишу по памяти, прошу простить. Если ничего не путаю, то проблема в функции ПутьКПлатформе1С(Знач Путь = "") файла v8runner.os.
Изначально при инициализации находится любая доступная версия 8.3, при этом путь сохраняется в переменной мПутьКПлатформе1С. В дальнейшем при вызове ПолучитьПутьКВерсииПлатформы если в качестве параметра передается Путь = "" (по памяти - это видимо случай когда конкретная версия не найдена) возвращается сохраненный ранее путь к некорректной версии платформы. И, соответственно, исключение не возникает, выполнение продолжается.

@nixel2007
Copy link
Member

но ведь vanessa runner всегда передает путь к платформе, если он указан в параметрах?

@AlexPCRus
Copy link
Contributor Author

AlexPCRus commented Jan 22, 2021

Может быть у меня не самый актуальный код. Я смотрю здесь:

**ИспользоватьВерсиюПлатформы**:
Процедура ИспользоватьВерсиюПлатформы(Знач МаскаВерсии, Знач Разрядность = Неопределено) Экспорт
	Путь = ПолучитьПутьКВерсииПлатформы(МаскаВерсии, Разрядность);
	ПутьКПлатформе1С(Путь);
КонецПроцедуры

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

**ПутьКПредприятию**:
Функция ПутьКПредприятию(Знач НомерВерсии, Знач Разрядность = Неопределено) Экспорт
	Возврат ПутьКПриложению(НомерВерсии, ПриложенияПлатформы.Предприятие, Разрядность);
КонецФункции

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

отсюда видно кмк что Путь может быть пустым, если не будет найдена версия платформы.

@AlexPCRus
Copy link
Contributor Author

AlexPCRus commented Jan 22, 2021

Спасибо, что научили форматированию :)

@artbear
Copy link
Member

artbear commented Jan 30, 2021

Посыл ПР правильный, лучше выдавать исключение.

а вот с реализацией проблемы.

возможно, это связано с проблемой неверной инициализации переменной мПутьКПлатформе1С

вроде бы был такой ишуз, но я его не нашел (

@AlexPCRus
Copy link
Contributor Author

Я малой кровью хотел :)
Чтобы остальное не пострадало. Или нужно отказаться от установки пути при инициализации вовсе, и в любом случае вызывать функцию ИспользоватьВерсиюПлатформы или с переданным параметром или со значением по умолчанию (8.3), но если вносить такие изменения в v8runner, то возможно пострадают зависимые плагины, которые не рассчитывают на то, что нужно обязательно вызывать эту функцию.

@artbear
Copy link
Member

artbear commented Jun 29, 2024

Изначально при инициализации находится любая доступная версия 8.3, при этом путь сохраняется в переменной мПутьКПлатформе1С. В дальнейшем при вызове ПолучитьПутьКВерсииПлатформы если в качестве параметра передается Путь = "" (по памяти - это видимо случай когда конкретная версия не найдена) возвращается сохраненный ранее путь к некорректной версии платформы. И, соответственно, исключение не возникает, выполнение продолжается.

Подтверждаю указанные проблемы, нужно исправлять, правда, ПР их полностью не решает (

вообще хочу в ванесса-раннер сделать следующий тикет

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

Successfully merging this pull request may close these issues.

4 participants