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

Процедуру ВыполнитьКоманду сделать Функцией #14

Closed
CT144 opened this issue Jan 17, 2017 · 9 comments
Assignees
Milestone

Comments

@CT144
Copy link

CT144 commented Jan 17, 2017

Процедуру "ВыполнитьКоманду" сделать Функцией, возвращающей "КодВозврата" от функции "ЗапуститьИПодождать", что бы дать возможность анализировать вызывающему коду результат выполнения команды. При этом отменить выброс исключения при не нулевом коде возврата из "ЗапуститьИПодождать". Это нужно, например, при запуске обновления конфигурации, которое может по разным причинам завершиться с не нулевым кодом возврата. Это предложение в "чистом" виде, а для сохранения совместимости можно в параметры процедуры "ВыполнитьКоманду" добавить 2-ой параметр: КодВозврата=Неопределено, который и устанавливать в случае его задания.
Или для полной "соовместимости" с текущей реализацией можно сделать так:
Процедура ВыполнитьКоманду(Знач Параметры, Результат = Неопределено) Экспорт
...
КодВозврата = ЗапуститьИПодождать(Параметры);
УстановитьВывод(ПрочитатьФайлИнформации());
Если Результат = Неопределено Тогда
Если КодВозврата <> 0 Тогда
Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!");
ВызватьИсключение ВыводКоманды();
Иначе
Лог.Отладка("Код возврата равен 0");
КонецЕсли;
Иначе
Результат = КодВозврата;
КонецЕсли;

@nixel2007
Copy link
Member

Полезное предложение, спасибо!

Не хотелось бы менять имеющееся апи (вызов исключения).

Можно подумать над таким вариантом -

  • ВыполнитьКоманду становится функцией, возвращающей код возврата
  • у УправлениеКонфигуратором добавляется метод а-ля "КидатьИсключениеПриПадении(Истина/Ложь) - значение по умолчанию - истина
  • В ВыполнитьКоманду анализируется свойство мКидатьИсключениеПриПадении - если истина, тогда кидать.

Возможно параллельно стоит рассмотреть возможность перевода запуска на 1commands, если научить 1commands сразу писать в лог, а не скопом после полного выполнения команды (как идет сейчас).

@nixel2007
Copy link
Member

/cc @artbear

@EvilBeaver
Copy link
Member

Предложение Никиты нравится

@artbear
Copy link
Member

artbear commented Jan 17, 2017

Возможно параллельно стоит рассмотреть возможность перевода запуска на 1commands, если научить 1commands сразу писать в лог, а не скопом после полного выполнения команды (как идет сейчас).

@nixel2007 С момента появления идеи выделения 1commands и в процессе реализации я подразумеваю подобный переход.
Например, есть ишуз artbear/1commands#4 Получение вывода команды, у которой есть отдельный лог-файл, как раз для работы с Конфигуратором

По поводу "сразу писать в лог" - да, нужно добавить эту фичу.

@artbear
Copy link
Member

artbear commented Feb 20, 2017

Ну что, немедленный вывод добавлен artbear/1commands#21

Реализую artbear/1commands#4 и затем можно переводить v8runner на использование 1commands, в котором хотелки из сабжа и многие другие уже реализованы.

@EvilBeaver
Copy link
Member

Тут @pumbaEO в гиттере нашел проблему с 1commands. Если запускается GUI приложение (а в данном случае это как раз так), то читать у него потоки бесполезно. К тому же Поток.Прочитать() упадет. У конфигуратора нет потоков вывода, поэтому он и пишет в файлик Out.

При переходе на 1commands это надо учесть.

@artbear
Copy link
Member

artbear commented Feb 23, 2017

Спасибо за ваши комменты, но, мужчины, может быть, все-таки будем предыдущие комменты читать, а? :(

Я и в #14 (comment) (17.01.17) я уже писал

С момента появления идеи выделения 1commands и в процессе реализации я подразумеваю подобный переход.
Например, есть ишуз artbear/1commands#4 Получение вывода команды, у которой есть отдельный лог-файл, как раз для работы с Конфигуратором

И в #14 (comment) (3 дня назад) также писал

Реализую artbear/1commands#4 и затем можно переводить v8runner на использование 1commands, в котором хотелки из сабжа и многие другие уже реализованы.

@EvilBeaver
Copy link
Member

Я просто напомнил про эту хрень. Женя недавно попытался запускать тонкий клиент коммандсом

arkuznetsov added a commit to arkuznetsov/v8runner that referenced this issue Nov 27, 2017
…лять вызовом исключения при выполнении команды с не 0 кодом возврата
artbear pushed a commit that referenced this issue Nov 28, 2017
* Выполнена доработка по #14 - добавлена возможность управлять вызовом исключения при выполнении команды с не 0 кодом возврата

* Исправлена ошибка в функции установки/проверки признака вызова исключения при ошибке выполнения команды

* Исправлена ошибка "отсутствие возвращаемого значения в функции УстановитьПризнакОжиданияВыполненияПрограммы";
Поправлен коментарий функции.

* В функции УстановитьПризнакОжиданияВыполненияПрограммы изменено возвращаемое значение на прежнее значение признака
@artbear artbear added this to the 0.12.0 milestone Nov 28, 2017
@artbear artbear self-assigned this Nov 28, 2017
@artbear
Copy link
Member

artbear commented Nov 28, 2017

выполнено в #50

@artbear artbear closed this as completed Nov 28, 2017
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

4 participants