Skip to content

Conversation

@pumbaEO
Copy link
Contributor

@pumbaEO pumbaEO commented Sep 4, 2017

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

Т.к. в linux нет возмжности определить версию по папке, то используем утилиту rac для получения версии установленной программы, т.к. это базовая зависимость при установке клиента, то всегда должна присутствовать в системе.
src/v8runner.os Outdated
ФайлВывода = ВременныеФайлы.НовоеИмяФайла();
СтрокаЗапуска = ФайлРАК.ПолноеИмя + " -v > " + ФайлВывода;
СтрокаЗапуска = "sh -c '" + СтрокаЗапуска + "'";
ЗапуститьПриложение(СтрокаЗапуска, , Истина);
Copy link
Member

Choose a reason for hiding this comment

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

Предлагаю юзать класс Команда из 1commands, код станет попроще.

Copy link
Member

Choose a reason for hiding this comment

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

Точнее, код станет намного проще :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ну вся библиотека идет без зависимости commands и вроде как ради одной строчки добавлять зависимость неохота, тем более, что по количесву строк оно проще не станет.

src/v8runner.os Outdated
Чтение.Закрыть();
мВерсияПлатформы = СокрЛП(Текст);
Исключение
Лог.Предупреждение("Не удалось прочитать файл версии 1С %1, %2.
Copy link
Member

Choose a reason for hiding this comment

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

А в чем проблема с чтением результата вывода?
неужели есть какой-то сценарий?

Copy link
Member

@artbear artbear left a comment

Choose a reason for hiding this comment

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

Предлагаю изменить код

@nixel2007
Copy link
Member

Любое io должно быть завернуто в попытку. Так что она тут вполне заслуженно

Copy link
Member

@artbear artbear left a comment

Choose a reason for hiding this comment

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

Женя, еще

  • нужно добавить зависимость от 1commands в packagedef
  • еще дополнения

src/v8runner.os Outdated
мВерсияПлатформы = СокрЛП(Команда.ПолучитьВывод());
Исключение
Лог.Предупреждение("Не удалось прочитать версию 1С %1, %2.
|" + ОписаниеОшибки(), мВерсияПлатформы, СтрокаЗапуска);
Copy link
Member

Choose a reason for hiding this comment

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

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

ИМХО в сообщение ошибки нужно вставить параметр метода ВерсияПлатформы вместо мВерсияПлатформы

Copy link
Member

Choose a reason for hiding this comment

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

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

Лог.Предупреждение("Не удалось прочитать версию 1С %1, %2.
|%3
|%4", ВерсияПлатформы, СтрокаЗапуска, Команда.ПолучитьВывод(),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) );

Copy link
Contributor Author

Choose a reason for hiding this comment

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

мВерсияПлатформы - итак неопределено, еще ранее, оно или определяется или нет. Зачем кидать в какие-то переменные, тем более в самом конце попытки только и происходит присвоение значение переменной, это вообще никакой пользы не принесет дополнительное присваивание.

Команда.ПолучитьВывод() будет в ИнформацияОбОшибке() я как раз для этого и обновлял 1ccommands

Copy link
Member

Choose a reason for hiding this comment

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

Насчет мВерсияПлатформы не согласен.
Подумай над сценарием
в линуксе мВерсияПлатформы пустая
далее падает Команда.Исполнить
в попытке мы выводим сообщение Не удалось прочитать версию 1С , folder\rac -v + сообщение ошибки.
и показа версии все равно не будет.

а пользователю было бы удобнее получить сообщение Не удалось прочитать версию 1С 8.3, folder\rac -v вместо вышеуказанного

Copy link
Contributor Author

Choose a reason for hiding this comment

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

я добавил УстановитьПравильныйКодВозврата(0) в случаи ошибки до присваивания даже не дойдет. Зачем писать какой-то мифический 8.3 если завтра будет 8.4 и т.д.?

Copy link
Member

Choose a reason for hiding this comment

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

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

Про 8.3 - я не предлагаю вставить жестко магическую строку "8.3" :(
я говорил о том, что будет, когда клиент библиотеки вызовет обсуждаемый метод

  • ПолучитьПутьКВерсииПлатформы("8.3");
  • ПолучитьПутьКВерсииПлатформы("8.4");
  • ПолучитьПутьКВерсииПлатформы("9.0");

в этом случае в случае ошибок ему было бы удобно получить не просто "пустую" строку ошибки, без искомой версии, а удобно получить более развернутое сообщение с искомой версией, т.е. с 8.3, 8.4 или 9.0

Copy link
Member

Choose a reason for hiding this comment

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

Я писал о вставке параметра метода ВерсияПлатформы, в котором и будет 8.3, 8.4 или 9.0

Copy link
Member

Choose a reason for hiding this comment

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

А вообще это мелочь, конечно.

Если считаешь, что все нормально, можешь и замержить.

Если ФайлРАК.Существует() Тогда
Команда = Новый Команда;
СтрокаЗапуска = ФайлРАК.ПолноеИмя + " -v ";
Команда.УстановитьСтрокуЗапуска(СтрокаЗапуска);
Copy link
Member

Choose a reason for hiding this comment

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

Предлагаю еще добавить очень полезную настройку Команда.УстановитьПравильныйКодВозврата(0);
Тогда будет выброшено исключение, если получим другой код возврата.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Нафиг, это попытка, там может и неправильный код. А исключение по УстановитьПравильныйКод - вообще неиформативно, "Ожидали 0 вместо 1 ", а что там по факту не так никогда не узнаешь.

@nixel2007
Copy link
Member

Разве 0 - не дефолтный код возврата?

@nixel2007
Copy link
Member

П.С. С телефона и не могу комментировать инлайн

@artbear
Copy link
Member

artbear commented Sep 5, 2017

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

  • УстановитьПравильныйКодВозврата(0);
  • УстановитьДиапазонПравильныхКодовВозврата(0, 2);

@nixel2007
Copy link
Member

Подстава... @khorevaa

@artbear
Copy link
Member

artbear commented Sep 5, 2017

А я вам в PR гитраннера писал об этом :)

@artbear
Copy link
Member

artbear commented Sep 6, 2017

Больше возражений, кроме использования мВерсияПлатформы, нет.

@pumbaEO pumbaEO merged commit b24f71e into oscript-library:develop Sep 6, 2017
Попытка
Команда.Исполнить();
мВерсияПлатформы = СокрЛП(Команда.ПолучитьВывод());
ВерсияПлатформы = СокрЛП(Команда.ПолучитьВывод());
Copy link
Member

Choose a reason for hiding this comment

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

В итоге все равно ИМХО неверно :(

Зачем заменять передаваемый в функцию параметр ВерсияПлатформы на какой-то вычисляемый??

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.

3 participants