Источник:
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