Показать сообщение отдельно
Старый 22.05.2018, 16:22   #1  
БАХ43 is offline
БАХ43
Участник
 
92 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
UTCDateTime в query range value
DAX2009
Есть диалоговое окно с парой значений TransDateTime плюс сохраняемый query по некоторым полям таблички RFIDTrans. После нажатия ОК, вызывается метод updateQuery, который добавляет ранг по дате-времени. Все отрабатывает нормально. НО если перед ОК хоть раз нажать кнопку "Выбрать", для смены значений фильтров, то выборка по времени идет на 3 часа раньше (Московская временная зона).
X++:
protected void updateQuery()
{
    QueryBuildDataSource    qbdsRFID;
    QueryBuildRange         rangeTransDateTime;
    str                     dateTimeRange;
    ;
    qbdsRFID     = queryRun.query().dataSourceTable(tablenum(RFIDTrans));
    fromDateTime = DateTimeUtil::removeTimeZoneOffset(fromDateTime, tz);
    toDateTime   = DateTimeUtil::removeTimeZoneOffset(toDateTime, tz);
    
    rangeTransDateTime  = qbdsRFID.addRange(fieldnum(RFIDTrans, TransDateTime));
    dateTimeRange = SysQuery::range(fromDateTime, toDateTime);
    rangeTransDateTime.value(dateTimeRange);
при этом переменная dateTimeRange идентична в обоих случаях. Такое ощущение, rangeTransDateTime.value в разных случаях отрабатывает по разному.
Кто-нибудь сталкивался с подобным?
ЗЫ: Поковырялся в свойствах типа данных TransDateTime, нашел свойство TimezonePreference. Если его выставить в No Conversion, тогда запрос формируется корректно и после нажимания кнопки "Выбрать", но при этом в форме RFIDTrans время начинает отображаться по Гринвичу, что в общем-то правильно, но неудобно.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!