【问题标题】:QueryScheduleRequest not working in Microsoft CRM 2011QueryScheduleRequest 在 Microsoft CRM 2011 中不起作用
【发布时间】:2014-01-15 10:54:59
【问题描述】:

我基本上想使用 QueryScheduleRequest 检查特定用户是否在提供的时间范围内空闲。为此,我使用以下代码来检索用户在今天日期的可用时间:

QueryScheduleRequest scheduleRequest = new QueryScheduleRequest
            {
                ResourceId = userResponse.UserId,
                Start = DateTime.Today,
                End = DateTime.Today,
                TimeCodes = new TimeCode[] { TimeCode.Available}
            };
QueryScheduleResponse scheduleResponse =    (QueryScheduleResponse)serviceProxy.Execute(scheduleRequest);

但是,我在 scheduleResponse 中没有得到正确的响应,如 CRM 服务日历中所示。响应中的开始和结束日期也发生了变化。例如,假设我在 scheduleRequest 中将 Start 和 End 日期输入为 12 日,但在 scheduleResponse 中它们分别更改为 12 日和 13 日。我已经检查过我指的是正确的用户。

这是用户在 CRM 中的日程安排(工作时间:上午 10 点到晚上 7 点):

这就是 scheduleResponse 中的结果:

注意更改日期和时间表。有没有其他方法可以实现这个功能?

【问题讨论】:

  • 我认为您遇到的问题是由于您的客户端和 crm 服务器之间的时区差异(无论在哪里)。 Thisthis 可能是开始的地方。

标签: dynamics-crm-2011 dynamics-crm


【解决方案1】:

基本上,Dynamics CRM 将数据库中的所有日期存储为 UTC 时间。Crm 用户必须将其转换为用户 LocalTime。

得到 scheduleResponse 后。您可以使用以下代码获取用户开始时间结束时间

QueryScheduleResponse scheduleResponse = (QueryScheduleResponse)service.Execute(scheduleRequest);
                                    foreach (var getTimings in scheduleResponse.TimeInfos)
                                   {
                                       DateTime startTime =Convert.ToDateTime(getTimings.Start.Value.ToLocalTime());
                                       DateTime endTime = Convert.ToDateTime(getTimings.Start.Value.ToLocalTime());
                                   }

注意:我们还有 ExpandCalendarRequest 类来检索用户可用的时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2012-08-04
    相关资源
    最近更新 更多