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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.08.2020, 11:01   #1  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
DateTimeUtil::getOriginatingTimeZone неправильно определяет часовой пояс
MS DAx 2009, KernelVersion: 5.0.1500.6491
MS SQL Server 2008 R2

Всем привет.
Метод ядра DateTimeUtil::getOriginatingTimeZone неправильно определяет значение энума TimeZone для российских часовых поясов.
Если из поля типа DateTime таблицы взять значение, в котором хранится значение по гринвичу и для которого в системном поле SQL хранится значение одной из российских тайм-зон, то метод всегда возвращает значение RTZ1 (Калиниград). Для нероссийских тайм-зон все определяется корректно.
Та же проблема, если в коде сформировать значение типа DateTime и указать для него одну из российских тайм-зон (RTZ2 - RTZ11).
При отображении значений на форме и сохранении значений DateTime в БД все корректно: в поле DateTime сохраняется значение по гринвичу, в поле тайм-зоны DateTimeZid записывается правильное значение, соответствующее тайм-зоне, настроенной для текущего пользователя (то есть сопоставление значений по таблицам TimeZoneList и TimeZonesRulesData отрабатывает корректно).
Старый 24.08.2020, 12:14   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Интересно. А у вас точно корректно часовые пояса прописаны в аксапте ? После изменение в законодательстве выходило обновление, которое меняло настройки.

Y2K11 или переход на зимнее время
Старый 24.08.2020, 17:23   #3  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Как мне сказали, патч по обновлению запускали. Судя по таблицам TimeZonesRulesData и TimeZonesList, данные по новым тайм-зонам и энум TimeZone с новыми значениями есть, единственное для тайм-зон РФ похоже меток нет. При сохранении значений типа dateTime в SQL в поле datetimeZId сохраняются правильные значения из TimeZonesRulesData.RuleId: 86001 - 86011, соответствующие настроенной у пользователя тайм-зоне, то есть получается, что значение энума определяется правильно: TimeZonesList.enumPosition: 86 - 96.
А вот в обратную сторону метод DateTimeUtil::getOriginatingTimeZone(Таблица.Поле_ типа_DateTime) для любого значения с российской тайм-зоной (86001 - 86011) всегда определяется значение энума 86 (что соответствует первой обновленной российской тайм-зоне Калиниград). Зарубежные обновленные тайм-зоны определяются корректно.
В теме Y2K11 или переход на зимнее время говорилось, что можно что-то руками поправить в файле *.ktd, но что править в файле не нашел.
Миниатюры
Нажмите на изображение для увеличения
Название: TimeZones.JPG
Просмотров: 28
Размер:	283.0 Кб
ID:	12925  

Последний раз редактировалось matew; 24.08.2020 в 17:30.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Слетел часовой пояс у пользователя demianimp DAX: Администрирование 7 07.08.2019 18:27
dynamicsaxhints: Simply about applyTimeZoneOffset and removeTimeZoneOffset methods of DateTimeUtil Blog bot DAX Blogs 0 09.02.2017 09:11
sashanazarov: Bugs in the DateTimeUtil::getSystemDateTime() Blog bot DAX Blogs 7 07.10.2016 10:36
ax-erp: Dynamics Ax 2009 using the DateTimeUtil Blog bot DAX Blogs 0 09.10.2012 17:11
DAX2009: DateTimeUtil::anyToDateTime() malex DAX: Программирование 9 16.03.2010 13:10

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

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

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