После небольшой проверки видно, что дело действительно в указанной функции 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;
}