gifts2017

Прерывание цикла с диалогом

Опубликовал PlatonovStepan (Jogeedae) в раздел Программирование - Практика программирования

Представляю Вам пример обработки, которая посредством windows-среды позволяет выходить из длительных циклических операций, наподобие метода ОбработкаПрерыванияПользователя(), но без прерывания выполнения кода.

Родился он из-за того, что на ноутбуке у меня нет кнопки Break (рецепты в инете, комбинации c  “Fn”, а также советы бывалых найти её не помогли, а менять из-за этого сканкоды... пфф).

 

Нет. Не так. Вот так (выделено):1cifixedit.png

То есть вместо «Ctrl+Break» выскакивает окошко, при закрытии которого выполнение некоего цикла прерывается.
Сигналом прерывания служит отсутствие процесса с окном диалога.
Исполнено это с помощью нескольких вспомогательных скриптов vbs:
vbsLauncher      - Запускает необходимые скрипты и завершается. 1С ждёт завершения его выполнения.
vbsDialog            - Просто процесс с окном диалога.
vbsChecker        - Скрипт, проверяющий наличие процесса 1С, если 1С умрёт, то vbsDialog и vbsChecker завершаются.

Располагая вышеперечисленными скриптами нужно их вовремя запустить в 1С-ке и правильно с ними работать.

Как это выглядит в конечном результате показано в приложенной обработке:

1cRepeater.png

Скачать файлы

Наименование Файл Версия Размер
StopItNowExample.epf 15
.epf 12,24Kb
02.04.13
15
.epf 12,24Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Борис Илов (ilov_boris) 03.04.13 09:23
Плюс за хорошее настроение )
2. Макас (makas) 03.04.13 10:11
я тоже плюсую за "красно-зеленый движок" :)
3. PlatonovStepan (Jogeedae) 05.04.13 03:28
Забыл в статье указать, что для работы с процессами используется класс Win32_Process объекта WbemScripting.SWbemLocator
4. leles 09.04.13 19:03
Хорошая идея!
Есть два вопроса:
1. Какой алгоритм управляет движением палки-рычага на первой картинке? Умный дом? Модернизатор-рационализатор? Пульт от телевизора?
2. Как я понял, всё завязано на КодВозврата в ЗапуститьПриложение()? У меня такое впечатление, что этот параметр появился начиная так с версии 8.2.15. Что должны курить пользователи младших версий?
Спасибо.
5. PlatonovStepan (Jogeedae) 10.04.13 05:21
(4) leles,
1. алгоритм? отнюдь, - ленивый хозяин. дабы не вставать чтобы воспользоваться выключателем.
2. Совершенно не задумываясь, использовал Запуститьприложение() увидев там эти параметры, а для пользователей младших версий придётся использовать тот же WScript.Shell объект.

Спасибо-пожалуйста.
6. leles 11.04.13 23:57
1. О, какое изящное решение! А то метание тапочка по выключателю это как SendKey, если находишься слегка не в фокусе, то не всегда срабатывает.

2. Да, Вы правы, с "WScript.Shell" обработка работает.

WshShell=Новый ComОбъект("WScript.Shell");
КодВозврата=WshShell.Run("wscript """ + ИмяФайлаЛаунчера + """ """ + ИмяФайлаДиалога + """ """ + ИмяФайлаЧекера + """ """ + Заголовок + """ """ + Надпись + """",1,-1);

3.+
Jogeedae; +1 Ответить