|
20 | 20 | Перем мФайлИнформацииВнешний;
|
21 | 21 | Перем мОчищатьФайлИнформации;
|
22 | 22 | Перем мТекстФайлаДоВывода;
|
| 23 | +Перем мОбработчикОжиданияПроцессаGUI; |
23 | 24 |
|
24 | 25 | //////////////////////////////////////////////////////////////////////////////////
|
25 | 26 | // Программный интерфейс
|
|
656 | 657 |
|
657 | 658 | КонецЕсли;
|
658 | 659 |
|
659 |
| - Если НЕ ЗначениеЗаполнено(ПутьКСпискуФайловЗагрузки) Тогда |
| 660 | + Если ЗначениеЗаполнено(ПутьКСпискуФайловЗагрузки) Тогда |
660 | 661 |
|
661 | 662 | Параметры.Добавить(СтрШаблон("-listFile %1", ОбернутьВКавычки(ПутьКСпискуФайловЗагрузки)));
|
662 | 663 | Параметры.Добавить(СтрШаблон("-format %1", ФорматВыгрузки));
|
663 | 664 |
|
664 |
| - КонецЕслИ; |
| 665 | + КонецЕсли; |
665 | 666 |
|
666 | 667 | КонецЕслИ;
|
667 | 668 |
|
|
1297 | 1298 |
|
1298 | 1299 | КонецПроцедуры
|
1299 | 1300 |
|
| 1301 | +// При запуска в режиме предприятия часто приложение GUI возвращает в оболочку ОК сразу после старта (а не после завершения) |
| 1302 | +// |
| 1303 | +// Параметры: |
| 1304 | +// ОбъектОбработчик - Объект с экспортным методом ОбработкаОжиданияПроцесса(Отказ, Интервал) |
| 1305 | +// Интервал - Интервал ожидания (мс) через который вызывается ОбработкаОжиданияПроцесса, если он не завершен |
| 1306 | +// |
| 1307 | +Процедура УстановитьОбработчикОжидания(Знач ОбъектОбработчик, Знач Интервал = 5000) Экспорт |
| 1308 | + |
| 1309 | + мОбработчикОжиданияПроцессаGUI = Новый Структура; |
| 1310 | + мОбработчикОжиданияПроцессаGUI.Вставить("Объект", ОбъектОбработчик); |
| 1311 | + мОбработчикОжиданияПроцессаGUI.Вставить("Интервал", Интервал); |
| 1312 | + |
| 1313 | +КонецПроцедуры |
| 1314 | + |
1300 | 1315 | Функция ЗапуститьИПодождать(Знач Параметры)
|
1301 | 1316 |
|
1302 | 1317 | СтрокаЗапуска = "";
|
|
1321 | 1336 | Иначе
|
1322 | 1337 | СтрокаЗапуска = Приложение + СтрокаЗапуска;
|
1323 | 1338 | КонецЕсли;
|
1324 |
| - ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); |
1325 |
| - |
| 1339 | + Если мОбработчикОжиданияПроцессаGUI = Неопределено Тогда |
| 1340 | + ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); |
| 1341 | + Иначе |
| 1342 | + ЗапуститьПроцессGUI(СтрокаЗапуска, КодВозврата); |
| 1343 | + КонецЕсли; |
| 1344 | + Лог.Отладка("Получен код возврата %1", КодВозврата); |
1326 | 1345 | Возврат КодВозврата;
|
1327 | 1346 |
|
1328 | 1347 | КонецФункции
|
1329 | 1348 |
|
| 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 | + |
1330 | 1386 | Функция ПрочитатьФайлИнформации()
|
1331 | 1387 |
|
1332 | 1388 | Текст = "";
|
1333 | 1389 |
|
1334 | 1390 | Файл = Новый Файл(ФайлИнформации());
|
1335 | 1391 | Если Файл.Существует() Тогда
|
1336 |
| - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); |
| 1392 | + Попытка |
| 1393 | + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); |
| 1394 | + Исключение |
| 1395 | + Лог.Предупреждение("Не удалось прочитать файл информации %1. |
| 1396 | + |" + ОписаниеОшибки(), Файл.ПолноеИмя); |
| 1397 | + |
| 1398 | + Возврат ""; |
| 1399 | + КонецПопытки; |
| 1400 | + |
1337 | 1401 | Текст = Чтение.Прочитать();
|
1338 | 1402 | Чтение.Закрыть();
|
1339 | 1403 |
|
|
0 commit comments