Имя: Пароль:
1C
 
Всегда ли вызов метода ФоновоеЗадание.Отменить() должен завершать фоновое задание?
,
0 TormozIT
 
гуру
21.08.19
16:06
Иногда замечал, что вызов метода ФоновоеЗадание.Отменить() (например в консоли заданий) не завершает фоновое задание и оно продолжает выполняться и завершается успешно. Замечали вы подобное поведение? Каким образом внутри платформы работает метод Отменить()? Сохраняет ли он флаг необходимости прервать фоновое задание при первой следующей возможности?
1 mistеr
 
21.08.19
16:10
Иногда просто возможности прервать может не оказаться.
2 sitex
 
naïve
21.08.19
16:11
(0) Да постоянно замечаю в той же БУХ3. А что делать . они продолжают выполняться до конца. Смирился .
3 rphosts
 
21.08.19
16:26
(0) вроде бывает такое, но у меня мала статистика. Не связано с тем, что открыта явная/неявная транзакция?
4 Cyberhawk
 
21.08.19
17:01
(1) Очевидно же что прервется на очередной строке кода (команде интерпретатору)
5 TormozIT
 
гуру
21.08.19
17:23
(4) В том то и дело, что наблюдается другое поведение, как я описал в (0).
6 Вафель
 
21.08.19
17:35
по идее конечно должно текущий запрос рубить и отменять.
но сделали как сделали
7 Cyberhawk
 
21.08.19
17:36
(5) Я так понял поведение можно описать "команда отмены молча игнорируется".
8 TormozIT
 
гуру
21.08.19
17:37
(7) Да
9 Cyberhawk
 
21.08.19
17:38
Ставил эксперименты, когда в сеансе ФЗ выполнение кода поставлено на паузу (отладчик стоит в точке останова), а из другого сеанса послана команда отмены этого ФЗ (предполагаем что у пользователя посылающего команду есть право администрирования или мы перешли в привилегированный режим)?
И возобновляем выполнение кода через разные промежутки времени: через 5, 10, 60 секунд.
10 Cyberhawk
 
21.08.19
17:38
Возможно команда отмены "теряется" если за некий промежуток времени выполнение кода не перешло к очередной строке?
11 Cyberhawk
 
21.08.19
17:39
Также интересно записать цикл в одну строку, внутри которого писать в ЖР диагностические сообщения.
И посмотреть доходит ли до конца выполнение такого цикла, либо команда отмены рубит сразу.
12 TormozIT
 
гуру
21.08.19
23:24
(10) Да. Вполне вероятно. И далее возникает логичная мысль - для интерактивного прерывания фонового задания надо запускать еще одно фоновое задание, которое будет в течение некоторого времени слать команду отмены с частотой например раз в секунду и по завершению возвращать результат отмены - успех/неуспех. А далее в свою очередь возникает мысль - а почему в платформе этого не сделали (например результатом и параметром метода Булево Отменить(Число СколькоСекундПытаться))?
13 TormozIT
 
гуру
22.08.19
06:58
(9) Нет. Исследований пока не проводил. Показалось, что здесь должны быть специалисты, которые могли уже провести такие исследования и поделиться опытом.
14 sitex
 
naïve
22.08.19
08:13
(10) Возможно и не теряется, а висит в ожидания выполнения. И до ходит когда фон.зд выполнилось.
(11) Я примерно такое пытался делать при: 1) Запросах напрямую к SQL из 1С , записью в ЖР в ФЗ, в ЖР ничего попадет даже после выполнения ФЗ.+ Стал замечать что если после того как отмену посылаешь в Фз может тупо в Сеансах зависнуть и тут только reboot службы.
15 TormozIT
 
гуру
25.08.19
09:48
Провел эксперименты на 8.3.13 серверной. Сеанс фонового задания вроде бы всегда сразу завершается, а соединение завершается при первой возможности. Т.е. в проведенных опытах не возникло необходимости в повторной отправке команды "Отменить" фоновому заданию. Но скорее всего я просто не нащупал нужные условия для воспроизведения ситуации, когда фоновое задание все таки завершается успешно.