Показать сообщение отдельно
Старый 04.08.2009, 18:58   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
409 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Повторения пакетных заданий и уход времени начала
Axapta 4.0
В общем, озаботился неприятной особенностью пакетных заданий, повторяющихся ежедневно или ежемесячно.
Дело в том, что если задание по каким-то причинам не начало обрабатываться в заданное время начала, то потом, после выполнения, время начала сместится на фактически получившееся в предыдущей итерации.
Это приводит к постепенному "сползанию" времени начала задания, что не всегда хорошо.
Чтобы это вылечить, достаточно в классе SysRecurrence отредактировать окончания двух методов: doUnitDate и doUnitWeek перед вызовом this.finish следующим образом:
X++:
    currentTime = startTime; //стало
    //currentTime = oldTime; было

    return this.finish(currentDate, currentTime);
}
Что самое интересное, когда я нашел причину и полез в методы doUnitYear и doUnitMonth, я обнаружил, что там-то уже и без меня всё хорошо, стоит startTime.
Было бы любопытно узнать, чем руководствовались разработчики, когда писали это...
Чтобы при нескольких параллельно обрабатывающих одну и ту же пакетную группу пакетных серверах взаимные блокировки не происходили, если задания что-то блокируют? Или чтобы дать пакетному серверу "передохнуть" между заданиями?
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
За это сообщение автора поблагодарили: Zabr (3).