Имя: Пароль:
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 серверной. Сеанс фонового задания вроде бы всегда сразу завершается, а соединение завершается при первой возможности. Т.е. в проведенных опытах не возникло необходимости в повторной отправке команды "Отменить" фоновому заданию. Но скорее всего я просто не нащупал нужные условия для воспроизведения ситуации, когда фоновое задание все таки завершается успешно.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn