From dbfbca12d3ab3bdda8f52016a436e03dc92c79f2 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sun, 19 Mar 2017 20:32:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BD=D0=B5=D0=B2=D0=B5=D1=80=D0=BD=D1=8B=D0=B9?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=BB=D0=BE=D0=B3=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20#26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit рефакторинг --- ...20\274\320\260\320\275\320\264\320\260.os" | 68 ++++++++++--------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" index 07e975a..2c92043 100644 --- "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" +++ "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" @@ -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", СтрДлина(РезультатРаботыПроцесса), СтрЧислоСтрок(РезультатРаботыПроцесса)); @@ -368,6 +352,24 @@ КонецФункции +Функция ОбработатьОчереднуюСтрокуВывода(ПотокПроцесса, ЗаписьXML, Знач ПрефиксДляОтладки) + Рез = ""; + Если ПотокПроцесса.ЕстьДанные Тогда + Рез = ПотокПроцесса.Прочитать(); + КонецЕсли; + + Если Рез <> "" Тогда + Лог.Отладка("в цикле %2%1", Рез, Символы.ПС); + ЗаписьXML.ЗаписатьБезОбработки(Рез + Символы.ПС); + + Если НемедленнныйВывод Тогда + Сообщить(Рез); + КонецЕсли; + КонецЕсли; + + Возврат Рез; +КонецФункции + // Инициализация работы библиотеки. // Задает минимальные настройки. // @@ -395,3 +397,5 @@ КонецПроцедуры Инициализация(); + +// Лог.УстановитьУровень(УровниЛога.Отладка); \ No newline at end of file