• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как прервать выполнение процедуры на диалоге

  • Автор темы Дайнеко
  • Дата начала
Д

Дайнеко

Человек нажал кнопочку и запустился процесс. В моем случае это отправка почты. Пока идет дело программа открыла форму и на ней показывает ход выполнения:
Код:
ФормаCеанса = Справочники.Почта.ПолучитьФорму("Монитор");
ФормаCеанса.Открыть();
ФормаCеанса.ЭлементыФормы.Операция.Значение = "Отправка";
Вот тут цикл
// операции
КонецЦикла
Но на форме "Монитор" я нарисовал кнопку "Прервать". И хочу во внутри цикла сделать что-то вроде:
Код:
Если НажалКнопочку Тогда
Прервать;
КонецЕсли;
Но как организовать взаимодействие. Ведь пока идет процесс форма Монитор не реагирует на клики. Есть механизм "Фоновые задания". Чую, что это мне нужно. Но нигде не встречал примера на использование.
Поделитесь, люди добрые. Простите, что обращаюсь к вам.
 
T

TimeDontWait

Возможно это вам поможет:

и немного вот здесь :
 
G

Gluk8888

А к снижению производительности это не повлечет? ведь отлавливая постоянно состояние будут лишние обращения к серверу? может лучше само получение почты сделать регламентным заданием которое будет с определенным интервалом обновляться? Имхо: ловить отработку нажатий кнопок в данном случае приведет к ненужным тормозам.
ЗЫ: пример прогресс бара + исследования на тему производительности
ЗЫ:ЗЫ: - индикация + прервать процесс по CTRL+BREAK
 
T

tanat

Мне кажется, что 1С какбе не очень способна выполнить такую связку. Может как-нибудь так:
откроем модально новую форму, в форме будем выполнять цикл до тех пор, пока пользователь не нажмет Ctrl+break, при нажатии - передаем в основную результат выполнения цикла...
 
Д

Дайнеко

Спасибо за ссылки, читаю с упоением.
Может как-нибудь так: откроем модально новую форму, в форме будем выполнять цикл до тех пор, пока пользователь не нажмет Ctrl+break
Циклить... Гм... Ну это ладно. Но дело в том, что основной форме, которая создала индикатор, нужно сделать свою работу.

Почитаю-ка я про фоновые задания. В жизни пригодится.
 
E

evgenyatam

вообще-то любую обработку можно прервать клавишей "Esc". только в 8.1 - нужно выполнить в коде одну встроенную процедуру. а какую - смотрите в справке.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!