Я столкнулся с проблемой, когда CRM, похоже, не корректно обрабатывает DateTime с помощью OData. В частности, мы пытаемся создать пользовательскую запись с именем new_vod с начальным и конечным временем (и несколькими другими атрибутами, которые я удалил здесь для простоты), используя вызов JavaScript в CrmRestKit. Когда пользователь, выполняющий эту функцию, находится не в том же часовом поясе, что и сервер, время неверно независимо от того, что происходит между сервером и пользователем.
Например, если мой пользователь CRM находится в режиме Mountain Time, а сервер находится в восточном времени, время начала будет через 2 часа (хотя оно и должно быть сейчас) при просмотре вновь созданной записи в CRM. Пользовательский часовой пояс не влияет на результат. (Я сравниваю "new_starttime" со временем "Создано", чтобы подтвердить, что я не просто неправильно просматриваю данные, а созданное вовремя - за 2 часа до начала времени в этом сценарии).
Вот соответствующий фрагмент:
var startTime = new Date();
//Add 90 minutes to the current date/time
var endTime = new Date();
endTime.setMinutes(startTime.getMinutes() + 90);
//Create a cvt_VOD record
var newVOD = {
'new_starttime': startTime,
'new_endtime': endTime
};
var createdVOD = CrmRestKit.Create('new_vod', newVOD)
...
Я заметил, что когда я отлаживаю создание записи new_vod в плагине предварительного этапа, "преобразование" в UTC уже произошло неправильно, поэтому это заставляет меня думать, что сам вызов Rest не прав.
Может ли кто-нибудь пролить свет на то, почему это происходит?
FYI, Мы находимся на CRM 2015 по существу.
Попробуйте это решение Somesh: