AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.10.2014, 12:54   #1  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Как резюме, привожу порядок действий, которые произвел для применения исправления KB3011878

1 Загрузить файл "windowstimezonerules.xml" (из исправления KB3011878) используя форму "TimezonePatchImport" (ее можно нейти в дереве АОТ)
При этом в систему будут загруженные новые временные зоны и правила их пересчета


То есть в списке енумов TimeZone появятся новые значения (после рестарта АОС).
В списке енумов будет уже два значения:
GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD (старое, с кодом 61)
GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD_RTZ2 (новое, с кодом 87)

2. Рестартовать АОС


3. Обновить пользователям новое значение временной зоны. Это можно сделать так
X++:
  userInfo    userInfo;
    userInfo    userInfoUpd;
    int i;
    ;
    while select userInfo
    where userInfo.preferredTimeZone == TimeZone::GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD
    {
        try
        {
            ttsbegin;

            select forupdate userInfoUpd
            where userInfoUpd.Id == userInfo.id;

            userInfoUpd.preferredTimeZone = TimeZone::GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD_RTZ2;

            userInfoUpd.update();

            ttscommit;

            i++;
        }

        catch
        {
            error(userInfo.name);
        }
    }

    info(strFmt("обновлено %1 записей пользователей", i));
При обновлении значения у активных пользователей возникнет ошибка. Поэтому нужно это делать либо когда активных пользователей нет,
либо просто завершить их сеансы принудительно.

4. Изменил в настройках формы "Данные компании" (CompanyInfo) значение часового пояса.
(Если есть активные пользователи - сделать это не получится. Поэтому изменил это прямо в таблице БД DATAAREA поле TIMEZONE заменил 61 на 87)
После этого стоит сделать рестарт АОС


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));
6 Просмотр всех мест в коде Аксапта, где использовано значение GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD
(через поиск в АОТ), с заменой на этого значения на GMTPLUS0300MOSCOW_STPETERSBURG_VOLGOGRAD_RTZ2

Может еще что забыл ?
За это сообщение автора поблагодарили: Maksim (1), sukhanchik (4), Logger (3), Ace of Database (3), SIrina (1), Pandasama (1).
Старый 27.10.2014, 11:11   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,664 / 1172 (43) ++++++++
Регистрация: 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).
Теги
time, time zone, utc, utcdatetime, зимнее время, часовые пояса

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Время транспортировки в часах Innokentiy DAX: Программирование 2 21.07.2011 15:44
DAX2009 зафиксировать дату и время сеанса Raven Melancholic DAX: Функционал 3 25.04.2011 16:26
Переход с Axapta 3.0 на AX 2009 - критика утилиты конвертации БД и скриптов обновления gl00mie DAX: Администрирование 5 02.01.2011 23:37
Время по графику и фактическое время работы в табеле nicko DAX: Функционал 0 09.02.2005 15:24
Установить время файла? SnowMan DAX: Программирование 5 01.10.2003 14:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:03.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.