Вы уверены что проверили настройки часового пояса в профиле пользователя?
Судя по всему, проблема, все же в вашем коде. Извращения с часовым поясом требуются только для того, чтобы использовать функцию toISOString, которая, кстати, не поддерживается в IE8-. Если накляпать дату вручную (в локальных значениях), то все корректно работает:
X++:
function OpenForm()
{
debugger;
var now = new Date();
now.setMinutes(now.getMinutes() + now.getTimezoneOffset() * -1);
var parameters = {};
parameters["subject"] = "Test";
parameters["scheduledstart"] = toLocalISODateString(now);
Xrm.Utility.openEntityForm("appointment", null, parameters);
}
function toLocalISODateString(date)
{
function _twoString(number) {
return number > 9 ? "" + number : "0" + number;
}
if (date.toISOString == undefined)
{
var isoDateString = date.getUTCFullYear();
isoDateString += "-" + this._twoString(date.getUTCMonth() + 1);
isoDateString += "-" + this._twoString(date.getUTCDate());
isoDateString += "T" + this._twoString(date.getUTCHours());
isoDateString += ":" + this._twoString(date.getUTCMinutes());
isoDateString += ":" + this._twoString(date.getUTCSeconds());
isoDateString += "." + this._twoString(date.getUTCMilliseconds());
isoDateString += "Z";
return isoDateString;
}
else
{
return date.toISOString();
}
}