![]() |
#1 |
Участник
|
axforum blogs: TimeZone в Ax2009
Источник: http://axforum.info/forums/blog.php?b=8150
============== Редкий случай, когда задачу на модификацию в Axapta поставили ДО вступления в силу очередного постановления правительства. Обычно задачу ставят спустя пол-года..год ПОСЛЕ ;). В данном случае, постановление о переводе часов на один час назад 26.10.2014 в 2 часа ночи. Ну, поскольку "ждать милостей от ..." не приходится, то решил разобраться самостоятельно Импорт новых правил определения часовых поясов - это форма TimezonePatchImport. В ней выбирается файл XML, который формирует новую запись в таблице \System Documentation\Tables\TimeZonesRulesData. Ага. И как должен выглядеть этот файл для новых правил? Ну, для начала надо понять назначение полей таблицы TimeZonesRulesData. Как оказалось, это не такая очевидная вещь :) Единственная ссылка, которую нашел http://stackoverflow.com/questions/1...ersion/1293263 По этой ссылке (и после ряда экспериментов ;) ) разобрался в назначении полей ---------------------------------------------------------- Назначение полей таблицы \System Documentation\Tables\TimeZonesRulesData RULEID - идентификатор записи. Фассетный код: первые 2 символа - значение поля TZENUM, далее 3 символа - порядковый номер TZENUM: Внешний ключ ссылки на таблицу TIMEZONESLIST или значение Base Enum: \System Documentation\Enums\Timezone YEAR: 0 если правило действует бессрочно или год применения правила BIAS: сдвиг времени в минутах относительно времени UTC DBIAS: периодический сдвиг DST (добавляется к BIAS для установки общего сдвига от UTC) Поля D* - определят начальную дату и время для сдвига DST Поле S* - определят конечную дату и время для сдвига DST Смысл полей ясен из их имени, кроме полей *DAY DDAY и SDAY - это номер недели в месяце (1-4, 5 = последняя неделя) DDAYOFWEEK и SDAYOFWEEK - номер дня недели (0 = Воскресенье) Необходимо либо задавать диапазон (как начальные, так и конечные даты), либо не задавать диапазон вообще. Указать только начальную или только конечную дату - невозможно. Это будет расценено как отсутствие диапазона. Т.е. действует на весь год ---------------------------------------------------------- Вот по какой логике в поле с названием DAY записывается номер недели в месяце? "Загадочная датская душа", не иначе :D Или уже американская :cool: Кстати, и файл XML за 2010..2011 года тоже "чудо чудное". Начало диапазона тогда задали в октябре, а окончание в мае. Ну, вероятно, спиной к монитору программировали :) ---------------------------------------------------------- Ну, тогда новый файл XML получается таким PHP код: 61004 61 2014 -240 0 10 0 5 2 0 0 60 0 12 3 5 23 59 59 0 61005 61 2015 -180 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 В принципе, можно сделать и одну запись, поставив в качестве даты окончания 2153 год. Но надо учитывать, что наше родное правительство в любой момент может выпустить очередное постановление о "самом правильном" распределении часовых поясов. О здоровье граждан они уже побеспокоились, следующее постановление замотивируют экономическим соображениями :D Источник: http://axforum.info/forums/blog.php?b=8150
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|