После обновления ЗКГУ на релиз 3.1.10.111 запустились обработчики обновления данных.
На 11 задании из 12 база повисла, точнее показывала, что идет выполнение задания, но длилось это очень долго.
Спустя несколько часов появилась ошибка, что задание не выполнено. А именно не выполнилась процедура "Документы.УвольнениеСписком.ЗаполнитьУвольнениеСОсновногоМестаРаботы". В описании к заданию написано "Заполняет признак увольнения с основного места работы в документах "Увольнение списком".
Программа просто зациклилась. В подсистеме случаи зацикливания предусмотрены (когда по отладчику лазил видел, что вроде 1000 раз дается на выполнение).
Прошелся отладчиком по этой процедуре "Документы.УвольнениеСписком.ЗаполнитьУвольнениеСОсновногоМестаРаботы". Вроде нигде вылетов не происходит. Все отрабатывает от и до. Пришлось копать глубже.
Зацикливание происходит в процедуре "ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас".
Вот здесь.
ОбработчикиВыполнялись = Истина; Пока ОбработчикиВыполнялись Цикл ОбработчикиВыполнялись = ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении, ПараметрыОбновления); КонецЦикла;
А если копнуть еще глубже, то есть в том же глобальном модуле функция "НайтиОбработчикОбновления", а там такие строки:
Если ОписаниеОбработчика.Итерация = ТекущаяИтерацияОбновления Тогда ЕстьНевыполненные = Истина; Продолжить; КонецЕсли;
При запуске базы у меня задание висело в статусе Выполняется, соответственно постоянно выполнялось условие ОписаниеОбработчика.Итерация = ТекущаяИтерацияОбновления. Поэтому чтобы отладка пошла по другому пути бывает полезно остановить задание в списке выполняемых заданий и снова запустить на выполнение.
Это отвлечение. Потому, что ошибка все таки была в процедуре "Документы.УвольнениеСписком.ЗаполнитьУвольнениеСОсновногоМестаРаботы". Там в первом запросе выбираются документы, не входящие в массив ОбработанныеДокументы. Но в ОбработанныеДокументы хранятся только проведенные документы, а в запросе делается выборка по всем документам, в том числе и не проведенным, поэтому каждый раз находилось что обрабатывать.
Замечу, что в следующем обновлении 3.1.10.135 эту ошибку исправили. И в принципе, я проверил, что можно было бы оставить эту ошибку и накатить 3.1.10.135, т.к. я посмотрел потом на копии и отложенные задания отработали и новые и 2 незавершенных задания из предыдущего релиза.
Отправить комментарий