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

Возможность инициализации требуемой версии платформы 1С Предприятие и сообщение об ошибке в случае ее отсутствия #130

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

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: Соколов Василий <[email protected]>

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

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

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

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

Co-authored-by: Nikita Gryzlov <[email protected]>
Co-authored-by: Andrei Ovsiankin <[email protected]>
Co-authored-by: mors <[email protected]>

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

Co-authored-by: Nikita Gryzlov <[email protected]>
Co-authored-by: abirambul <[email protected]>
Co-authored-by: Соколов Василий <[email protected]>
Co-authored-by: Andrei Ovsiankin <[email protected]>
Co-authored-by: mors <[email protected]>
…ъекта для возможности передавать желаемую версию платформы
@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С. В дальнейшем при вызове ПолучитьПутьКВерсииПлатформы если в качестве параметра передается Путь = "" (по памяти - это видимо случай когда конкретная версия не найдена) возвращается сохраненный ранее путь к некорректной версии платформы. И, соответственно, исключение не возникает, выполнение продолжается.

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

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

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

Successfully merging this pull request may close these issues.

4 participants