Skip to content

Commit

Permalink
Исправлен неверный вывод лога команды #26
Browse files Browse the repository at this point in the history
рефакторинг
  • Loading branch information
artbear committed Mar 19, 2017
1 parent d1a25bf commit dbfbca1
Showing 1 changed file with 36 additions and 32 deletions.
68 changes: 36 additions & 32 deletions src/Команда.os
Original file line number Diff line number Diff line change
Expand Up @@ -297,51 +297,35 @@
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();

ПерехватыватьПотоки = Истина;

Если КодировкаВывода = Неопределено Тогда
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, Истина, Истина);
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки);
Иначе
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, Истина, Истина, КодировкаВывода);
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки, КодировкаВывода);
КонецЕсли;
Процесс.Запустить();

Если Не НемедленнныйВывод Тогда
Процесс.ОжидатьЗавершения();
ЗаписьXML.ЗаписатьБезОбработки(Процесс.ПотокВывода.Прочитать());
Иначе

Если ПериодОпросаВМиллисекундах <> 0 Тогда
Приостановить(ПериодОпросаВМиллисекундах);
КонецЕсли;

Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные ИЛИ Процесс.ПотокОшибок.ЕстьДанные Цикл
Если ПериодОпросаВМиллисекундах <> 0 Тогда
Приостановить(ПериодОпросаВМиллисекундах);
КонецЕсли;
Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные ИЛИ Процесс.ПотокОшибок.ЕстьДанные Цикл
Если ПериодОпросаВМиллисекундах <> 0 Тогда
Приостановить(ПериодОпросаВМиллисекундах);
КонецЕсли;

ОчереднаяСтрокаВывода = Процесс.ПотокВывода.Прочитать();
ОчереднаяСтрокаОшибок = Процесс.ПотокОшибок.Прочитать();
ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокВывода, ЗаписьXML, "В цикле");
ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокОшибок, ЗаписьXML, "В цикле");

Если Не ПустаяСтрока(ОчереднаяСтрокаВывода) Тогда
ОчереднаяСтрокаВывода = СтрЗаменить(ОчереднаяСтрокаВывода, Символы.ВК, "");
Если ОчереднаяСтрокаВывода <> "" Тогда
Лог.Отладка("%2%1", ОчереднаяСтрокаВывода, Символы.ПС);
ЗаписьXML.ЗаписатьБезОбработки(ОчереднаяСтрокаВывода);
КонецЕсли;
КонецЕсли;
КонецЦикла;

Если Не ПустаяСтрока(ОчереднаяСтрокаОшибок) Тогда
ОчереднаяСтрокаОшибок = СтрЗаменить(ОчереднаяСтрокаОшибок, Символы.ВК, "");
Если ОчереднаяСтрокаОшибок <> "" Тогда
Лог.Отладка("%2%1", ОчереднаяСтрокаОшибок, Символы.ПС);
ЗаписьXML.ЗаписатьБезОбработки(ОчереднаяСтрокаОшибок);
КонецЕсли;
КонецЕсли;
ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокВывода, ЗаписьXML, "После цикла");
ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокОшибок, ЗаписьXML, "После цикла");

КонецЦикла;

КонецЕсли;

РезультатРаботыПроцесса = ЗаписьXML.Закрыть();
Если Не НемедленнныйВывод Тогда
Лог.Отладка("%2%1", РезультатРаботыПроцесса, Символы.ПС);
Лог.Отладка("РезультатРаботыПроцесса %2-----%2%1%2------%2", РезультатРаботыПроцесса, Символы.ПС);
КонецЕсли;

Лог.Отладка("Длина вывода %1, количество строк %2", СтрДлина(РезультатРаботыПроцесса), СтрЧислоСтрок(РезультатРаботыПроцесса));
Expand All @@ -368,6 +352,24 @@

КонецФункции

Функция ОбработатьОчереднуюСтрокуВывода(ПотокПроцесса, ЗаписьXML, Знач ПрефиксДляОтладки)
Рез = "";
Если ПотокПроцесса.ЕстьДанные Тогда
Рез = ПотокПроцесса.Прочитать();
КонецЕсли;

Если Рез <> "" Тогда
Лог.Отладка("в цикле %2%1", Рез, Символы.ПС);
ЗаписьXML.ЗаписатьБезОбработки(Рез + Символы.ПС);

Если НемедленнныйВывод Тогда
Сообщить(Рез);
КонецЕсли;
КонецЕсли;

Возврат Рез;
КонецФункции

// Инициализация работы библиотеки.
// Задает минимальные настройки.
//
Expand Down Expand Up @@ -395,3 +397,5 @@
КонецПроцедуры

Инициализация();

// Лог.УстановитьУровень(УровниЛога.Отладка);

0 comments on commit dbfbca1

Please sign in to comment.