Показать сообщение отдельно
Старый 27.10.2014, 11:11   #83  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от someOne Посмотреть сообщение
5. Обновил настройки списков пакетных заданий - время запуска на час вперед + изменение значений часового пояса.
это можно сделать так
X++:
    batchJob    batchJob;
    int i;
    TimeZone    batchTimeZone;
    ;

    ttsbegin;

    while select forupdate batchJob
    {
        batchTimeZone = conPeek(batchJob.RecurrenceData, 9);

        if (batchTimeZone == TimeZone::GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD)
        {
            batchJob.OrigStartDateTime = DateTimeUtil::addHours(batchJob.OrigStartDateTime, 1);
            batchJob.RecurrenceData = conPoke(batchJob.RecurrenceData, 9, TimeZone::GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD_RTZ2);
            batchJob.update();

            i++;
        }
    }

    ttscommit;

    info(strFmt("обновлено %1 пакетных заданий", i));
Этого недостаточно. Вы забыли, что есть еще системное (скрытое) поле batchJob.OrigStartDateTimeTZID, которое заполняется один раз в момент создания записи и больше уже никогда не изменяется. Изменить его можно только прямой командой на SQL-сервере.

PHP код:
update BatchJob
set OrigStartDateTimeTZID 
86002
    
,OrigStartDateTime dateAdd(hour1OrigStartDateTime)
where OrigStartDateTimeTZID 61003
     
and OrigStartDateTime >= '20141026' 
Кроме того, "для порядка" надо сделать аналогичную замену в истории выполнения пакетных заданий

PHP код:
update BatchJobHistory
set OrigStartDateTimeTZID 
86002
    
,OrigStartDateTime dateAdd(hour1OrigStartDateTime)
where OrigStartDateTimeTZID 61003
     
and OrigStartDateTime >= '20141026' 
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Logger (10), someOne (3).