07.04.2014, 10:59 | #1 |
Талантливый разгвоздяй
|
AX 2012 R2: как сменить первый день в календаре?
AX 2012 R2, Cumulative update 7.
Как в AX 2012 сменить первый день в календаре? В региональных настройках на клиенте и АОСе настройки даты-времени совпадают и в то время как в календаре windows первый день - это "Понедельник", лукап по дате в AX 2012 упорно показывает "Воскресенье". P. S. Наткнулся в интернете на хотфикс, но нет времени проверять его, поэтому хотел узнать сталкивался ли кто и как решал такую задачу. |
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
07.04.2014, 13:10 | #2 |
Участник
|
После небольшой проверки видно, что дело действительно в указанной функции Global::firstDayOfWeek(). Я лично в 2012-й не стал бы применять исправление с использованием класса WinAPI, потому что хотя сейчас этот метод используется в основном в lookup'е, но если вдруг его дернуть на сервере (тем более, в пакетном задании), то получится ерунда. Вот вариант исправления с использованием .NET, сделанный по аналогии с Global::firstWeekOfYear()
X++: static int firstDayOfWeek() { System.Globalization.DateTimeFormatInfo fi; // gl00mie, 07.04.2014 --> System.Globalization.CultureInfo ci; str lng; // gl00mie, 07.04.2014 <-- int dow; SysGlobalCache cache = classfactory.globalCache(); int clientFirstDayOfWeek; if (cache.isSet(classStr(Global), funcName())) { clientFirstDayOfWeek = cache.get(classStr(Global), funcName()); } else { // gl00mie, 07.04.2014 --> lng = currentUserLanguage(); ci = new System.Globalization.CultureInfo(lng); fi = ci.get_DateTimeFormat(); /* fi = new System.Globalization.DateTimeFormatInfo(); */ // gl00mie, 07.04.2014 <-- dow = fi.get_FirstDayOfWeek(); // The .NET API returns 0 for sunday, but we expect sunday to // be represented as 6, (monday is 0). clientFirstDayOfWeek = (dow + 6) mod 7; cache.set(classStr(Global), funcName(),clientFirstDayOfWeek); } return clientFirstDayOfWeek; } |
|
|
За это сообщение автора поблагодарили: Logger (3), leva (2), AvrDen (1), MikeR (6), S.Kuskov (5), Kabardian (6). |
Теги |
ax2012, ax2012r2, bug, календарь, ошибка |
|
|