precommit1c icon indicating copy to clipboard operation
precommit1c copied to clipboard

Зависает выгрузка для "толстых" конфигураций 1С

Open artbear opened this issue 10 years ago • 2 comments

Зависает на первой же команде git diff-index --name-status --cached HEAD или git status --porcelain Проблема в реализации метода ПолучитьВыводПроцесса Так гарантированно работает

Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата)

    ЛогФайл = ВременныеФайлы.НовоеИмяФайла();
    СтрокаЗапуска = "cmd /C """ + КоманднаяСтрока + " > """ + ЛогФайл + """ 2>&1""";
    Лог.Отладка(СтрокаЗапуска);
    ЗапуститьПриложение(СтрокаЗапуска,, Истина, КодВозврата);
    Лог.Отладка("Код возврата: " + КодВозврата);
    ЧтениеТекста = Новый ЧтениеТекста(ЛогФайл, "utf-8");
    Вывод = ЧтениеТекста.Прочитать();
    ЧтениеТекста.Закрыть();

    Возврат Вывод;

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

а так часто не работает, на локальной машине (Вин7) работает на нескольких машинх (Server 2012) просто зависает и все :(

Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата)

    // Это для dev версии 1.0.11
    Процесс = СоздатьПроцесс(КоманднаяСтрока, , Истина,, КодировкаТекста.UTF8);
    Процесс.Запустить();
    Вывод = "";

    Процесс.ОжидатьЗавершения();

    Вывод = Вывод + Процесс.ПотокВывода.Прочитать();
    Вывод = Вывод + Процесс.ПотокОшибок.Прочитать();

    КодВозврата = Процесс.КодВозврата;

    Возврат Вывод;

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

@EvilBeaver Можешь что-нибудь подсказать?

artbear avatar Dec 09 '15 13:12 artbear

Точнее зависает на репозитариях, в которых используется разбор конфигурации 1С на исходники

artbear avatar Dec 09 '15 13:12 artbear

Брать отладчик, запускать проблемный код под ним и смотреть, что происходит

-----Исходное сообщение----- От: "Artur Ayukhanov" [email protected] Отправлено: ‎09.‎12.‎2015 16:10 Кому: "xDrivenDevelopment/precommit1c" [email protected] Копия: "Andrei Ovsiankin" [email protected] Тема: [precommit1c] Зависает выгрузка для "толстых" конфигураций 1С (#60)

Зависает на первой же команде git diff-index --name-status --cached HEAD Проблема в реализации метода ПолучитьВыводПроцесса Так гарантированно работает Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата)

ЛогФайл = ВременныеФайлы.НовоеИмяФайла();
СтрокаЗапуска = "cmd /C """ + КоманднаяСтрока + " > """ + ЛогФайл + """ 2>&1""";
Лог.Отладка(СтрокаЗапуска);
ЗапуститьПриложение(СтрокаЗапуска,, Истина, КодВозврата);
Лог.Отладка("Код возврата: " + КодВозврата);
ЧтениеТекста = Новый ЧтениеТекста(ЛогФайл, "utf-8");
Вывод = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

Возврат Вывод;

КонецФункции а так часто не работает, на локальной машине (Вин7) работает на нескольких машинх (Server 2012) просто зависает и все :( Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата)

// Это для dev версии 1.0.11
Процесс = СоздатьПроцесс(КоманднаяСтрока, , Истина,, КодировкаТекста.UTF8);
Процесс.Запустить();
Вывод = "";

Процесс.ОжидатьЗавершения();

Вывод = Вывод + Процесс.ПотокВывода.Прочитать();
Вывод = Вывод + Процесс.ПотокОшибок.Прочитать();

КодВозврата = Процесс.КодВозврата;

Возврат Вывод;

КонецФункции @EvilBeaver Можешь что-нибудь подсказать? — Reply to this email directly or view it on GitHub.

EvilBeaver avatar Dec 09 '15 15:12 EvilBeaver