Skip to content

Commit 5a442f4

Browse files
committed
Merge branch 'develop'
2 parents 9b0f5f8 + 129c7df commit 5a442f4

File tree

2 files changed

+70
-6
lines changed

2 files changed

+70
-6
lines changed

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
Описание.Имя("v8runner")
3-
.Версия("0.8.0")
3+
.Версия("0.9")
44
.ЗависитОт("asserts")
55
.ЗависитОт("fs")
66
.ЗависитОт("logos")

src/v8runner.os

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
Перем мФайлИнформацииВнешний;
2121
Перем мОчищатьФайлИнформации;
2222
Перем мТекстФайлаДоВывода;
23+
Перем мОбработчикОжиданияПроцессаGUI;
2324

2425
//////////////////////////////////////////////////////////////////////////////////
2526
// Программный интерфейс
@@ -656,12 +657,12 @@
656657

657658
КонецЕсли;
658659

659-
Если НЕ ЗначениеЗаполнено(ПутьКСпискуФайловЗагрузки) Тогда
660+
Если ЗначениеЗаполнено(ПутьКСпискуФайловЗагрузки) Тогда
660661

661662
Параметры.Добавить(СтрШаблон("-listFile %1", ОбернутьВКавычки(ПутьКСпискуФайловЗагрузки)));
662663
Параметры.Добавить(СтрШаблон("-format %1", ФорматВыгрузки));
663664

664-
КонецЕслИ;
665+
КонецЕсли;
665666

666667
КонецЕслИ;
667668

@@ -1297,6 +1298,20 @@
12971298

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

1301+
// При запуска в режиме предприятия часто приложение GUI возвращает в оболочку ОК сразу после старта (а не после завершения)
1302+
//
1303+
// Параметры:
1304+
// ОбъектОбработчик - Объект с экспортным методом ОбработкаОжиданияПроцесса(Отказ, Интервал)
1305+
// Интервал - Интервал ожидания (мс) через который вызывается ОбработкаОжиданияПроцесса, если он не завершен
1306+
//
1307+
Процедура УстановитьОбработчикОжидания(Знач ОбъектОбработчик, Знач Интервал = 5000) Экспорт
1308+
1309+
мОбработчикОжиданияПроцессаGUI = Новый Структура;
1310+
мОбработчикОжиданияПроцессаGUI.Вставить("Объект", ОбъектОбработчик);
1311+
мОбработчикОжиданияПроцессаGUI.Вставить("Интервал", Интервал);
1312+
1313+
КонецПроцедуры
1314+
13001315
Функция ЗапуститьИПодождать(Знач Параметры)
13011316

13021317
СтрокаЗапуска = "";
@@ -1321,19 +1336,68 @@
13211336
Иначе
13221337
СтрокаЗапуска = Приложение + СтрокаЗапуска;
13231338
КонецЕсли;
1324-
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата);
1325-
1339+
Если мОбработчикОжиданияПроцессаGUI = Неопределено Тогда
1340+
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата);
1341+
Иначе
1342+
ЗапуститьПроцессGUI(СтрокаЗапуска, КодВозврата);
1343+
КонецЕсли;
1344+
Лог.Отладка("Получен код возврата %1", КодВозврата);
13261345
Возврат КодВозврата;
13271346

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

1349+
Процедура ЗапуститьПроцессGUI(Знач СтрокаЗапуска, КодВозврата)
1350+
1351+
Процесс = СоздатьПроцесс(СтрокаЗапуска);
1352+
Процесс.Запустить();
1353+
1354+
Лог.Отладка("Стартовал процесс в режиме GUI, PID:%1", Процесс.Идентификатор);
1355+
Приостановить(3000); // инициализация 1С
1356+
1357+
Пока Не Процесс.Завершен Цикл
1358+
1359+
Если мОбработчикОжиданияПроцессаGUI.Интервал > 0 Тогда
1360+
Лог.Отладка("Пауза %1 секунд", мОбработчикОжиданияПроцессаGUI.Интервал);
1361+
Приостановить(мОбработчикОжиданияПроцессаGUI.Интервал);
1362+
КонецЕсли;
1363+
1364+
Отказ = Ложь;
1365+
Лог.Отладка("Вызов обработчика ожидания");
1366+
Попытка
1367+
мОбработчикОжиданияПроцессаGUI.Объект.ОбработкаОжиданияПроцесса(Отказ, мОбработчикОжиданияПроцессаGUI.Интервал);
1368+
Исключение
1369+
Лог.Отладка(ОписаниеОшибки());
1370+
ВызватьИсключение;
1371+
КонецПопытки;
1372+
1373+
Если Отказ = Истина Тогда
1374+
КодВозврата = -1;
1375+
Лог.Отладка("Получен отказ");
1376+
Возврат;
1377+
КонецЕсли;
1378+
1379+
КонецЦикла;
1380+
1381+
Лог.Отладка("Процесс завершен.");
1382+
КодВозврата = Процесс.КодВозврата;
1383+
1384+
КонецПроцедуры
1385+
13301386
Функция ПрочитатьФайлИнформации()
13311387

13321388
Текст = "";
13331389

13341390
Файл = Новый Файл(ФайлИнформации());
13351391
Если Файл.Существует() Тогда
1336-
Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя);
1392+
Попытка
1393+
Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя);
1394+
Исключение
1395+
Лог.Предупреждение("Не удалось прочитать файл информации %1.
1396+
|" + ОписаниеОшибки(), Файл.ПолноеИмя);
1397+
1398+
Возврат "";
1399+
КонецПопытки;
1400+
13371401
Текст = Чтение.Прочитать();
13381402
Чтение.Закрыть();
13391403

0 commit comments

Comments
 (0)