Skip to content

Commit

Permalink
Перехватываем вывод независимо от наличия ошибок
Browse files Browse the repository at this point in the history
Вывод выполнения консольного приложения возвращался
независимо от того, выполнилось приложение с ошибками
или нет.

Closes vanessa-opensource#799
  • Loading branch information
kuntashov committed Oct 26, 2020
1 parent 297c0a4 commit 0a4bd03
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4">
<ExternalDataProcessor uuid="11c5f751-bfaf-480a-92fe-7f30023f2e9a">
<ExternalDataProcessor uuid="94c6b1e7-9eb4-4925-ae3b-86ddb9b56f0e">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>908d0aaf-e4ec-4668-8d14-3e8075d222fd</xr:ObjectId>
<xr:ObjectId>d5c45041-d9eb-4617-ad45-c5a6420d1f6b</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.УправлениеПриложениями" category="Object">
<xr:TypeId>85629dd2-6be4-49c6-9a69-13411102aa57</xr:TypeId>
<xr:ValueId>3fdd55c8-e92e-4f99-8b28-3ba8957b50ab</xr:ValueId>
<xr:TypeId>27221752-6c79-4c7a-b9f2-2f95bc97f37b</xr:TypeId>
<xr:ValueId>c05f62ba-2037-4948-b0a3-2867a9e7093b</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,15 @@
КодВозврата = 0;

ИмяФайлаВывода = ПолучитьИмяВременногоФайла("txt");
ВремКоманда = ТекстКоманды + " > """ + ИмяФайлаВывода + """";

// `2>&1` редиректит stderr в stdout, чтобы весь вывод собрать в одном файле.
ВремКоманда = ТекстКоманды + "> """ + ИмяФайлаВывода + """ 2>&1";

Попытка

ЗапуститьПриложение(ВремКоманда,, ЖдатьОкончания, КодВозврата);

Если КодВозврата = 0 Тогда
Если ФайлСуществует(ИмяФайлаВывода) Тогда
КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8);
КонецЕсли;

Expand Down Expand Up @@ -159,7 +161,7 @@

Рез = WshShell.Run(ИмяВременногоФайлаКоманды, 0, ?(ЖдатьОкончания, -1, 0));

Если Рез = 0 Тогда
Если ФайлСуществует(ИмяФайлаВывода) Тогда
// команда выполнилась успешно
КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8);
КонецЕсли;
Expand Down Expand Up @@ -478,4 +480,9 @@

КонецПроцедуры

Функция ФайлСуществует(Путь)
Файл = Новый Файл(Путь);
Возврат Файл.Существует() И Файл.ЭтоФайл();
КонецФункции

// } Helpers
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,15 @@
КодВозврата = 0;

ИмяФайлаВывода = ПолучитьИмяВременногоФайла("txt");
ВремКоманда = ТекстКоманды + " > """ + ИмяФайлаВывода + """";

// `2>&1` редиректит stderr в stdout, чтобы весь вывод собрать в одном файле.
ВремКоманда = ТекстКоманды + "> """ + ИмяФайлаВывода + """ 2>&1";

Попытка

ЗапуститьПриложение(ВремКоманда,, ЖдатьОкончания, КодВозврата);

Если КодВозврата = 0 Тогда
Если ФайлСуществует(ИмяФайлаВывода) Тогда
КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8);
КонецЕсли;

Expand Down Expand Up @@ -175,7 +177,7 @@

Рез = WshShell.Run(ИмяВременногоФайлаКоманды, 0, ?(ЖдатьОкончания, -1, 0));

Если Рез = 0 Тогда
Если ФайлСуществует(ИмяФайлаВывода) Тогда
// команда выполнилась успешно
КонсольныйВывод = ПрочитатьФайлКакТекст(ИмяФайлаВывода, ИспользоватьКодировкуТекстаUTF8);
КонецЕсли;
Expand Down Expand Up @@ -511,4 +513,9 @@

КонецПроцедуры

Функция ФайлСуществует(Путь)
Файл = Новый Файл(Путь);
Возврат Файл.Существует() И Файл.ЭтоФайл();
КонецФункции

// } Helpers

0 comments on commit 0a4bd03

Please sign in to comment.