2014-01-15 3 views
1

기본적으로 QueryScheduleRequest을 사용하여 제공된 사용자 범위에서 특정 사용자가 무료인지 확인하고 싶습니다. 이를 위해 나는 오늘 날짜를 사용자의 가능한 타이밍을 검색하기 위해 다음 코드 조각을 사용하고 있습니다 : CRM 서비스 일정에서 볼 수 있듯이Microsoft CRM 2011에서 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에 적절한 반응을 얻고 있지 않다. 응답에서 시작 및 종료 날짜도 변경됩니다. 예를 들어, scheduleRequest에서 12 번째로 시작 날짜와 종료 날짜를 입력했지만 scheduleResponse에서 12 번째와 13 번째로 변경되었습니다. 올바른 사용자를 언급하고 있는지 확인했습니다. (: 오후 7시부터 오전 10시까지 작업 시간) :

이 사용자의 일정 CRM에서 같은 모습입니다 enter image description here

그리고 이것은 scheduleResponse의 결과처럼 보이는 방법입니다

enter image description here

것이 관찰 날짜와 일정이 변경되었습니다. 이 기능을 구현할 수있는 다른 방법이 있습니까?

+0

가능한 사용자를 검색 할 수 ExpandCalendarRequest 클래스도 있습니다 . [This] (http://mscrmonline.wordpress.com/2010/04/23/time-zone-setting-in-microsoft-crm/) 및 [this] (http://stackoverflow.com/questions/17944111/) datetime-plugin-crm-2011)이 시작될 수 있습니다. – keerz

답변

0

기본적으로 Dynamics CRM은 데이터베이스에 모든 날짜를 UTC 시간 인으로 저장합니다. 사용자는 사용자 LocalTime으로 변환해야합니다.

일정 응답을받은 후. 아래 코드를 사용하여 사용자를 얻으십시오 시작 시간종료 시간.

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()); 
            } 

참고 : 우리는 당신이에 실행 한 문제 때문에 클라이언트와 CRM 서버 (즉 곳) 사이의 시간대의 차이라고 생각 타이밍

관련 문제