절차 중 하나를 사용하면보기를 선택하고 리본 버튼을 눌러 관련 레코드를 대량 삽입 할 수 있습니다. 양식이 저장되고 플래그가 설정되고 플러그인이 작업을 수행합니다.서버 측 Fetchxml이 다른 결과를 반환합니다.
우리는 뷰 선택기로 서브 그리드를 사용하여 사용자가 자신의 뷰를 즉시 선택하거나 만들 수있게합니다. 보기가 선택되면 결과 수 (제공되는 5k)가 표시됩니다.
플러그인이 동일한 fetchxml 서버 측 (사용자 쿼리 또는 저장된 쿼리, Retrieve + FetchExpression 검색)을 실행하면 결과가 변경됩니다. 우리는 다른 수의 레코드뿐만 아니라 일부 레코드도 다릅니다.
우리는이 문제가 시간대와 관련이 있다고 결론을 내 렸습니다. 일부 필터에는 날짜 값과 함께 "on-after-after"연산자가 포함되어 있습니다. 예 :
<filter type="and">
<condition attribute="modifiedon" operator="on-or-after" value="2011-01-01" />
<condition attribute="modifiedon" operator="on-or-before" value="2011-12-31" />
</filter>
플러그인은 관리자로 실행. 플러그인 사용자를 변경해도 FetchExpression을 사용하여 CRM에서 레코드를 가져올 때 현재 사용자 시간대가 고려되지 않은 것처럼 효과가 없습니다.
fetchxml 표현식이 클라이언트 측과 서버 측에서 동일한 결과를 반환하도록하려면 어떻게해야합니까?
아마 관련 : MSDN thread.
감사합니다.
편집 : Daryl의 제안에 따라 SQL 추적을 실행했습니다. 결과는 의아해하고있다. 클라이언트 측 쿼리 (CRM, 즉 고급 찾기에서 실행)에 대해 날짜가 올바르게 오프셋됩니다. 즉, fetchxml이 사용자의 시간대 설정을 사용하여 올바르게 변환되었음을 의미합니다. 동일한 쿼리 인 서버 쪽에서는 발생하지 않습니다. 출력 SQL에는 시간대 오프셋이없는 "있는 그대로"의 날짜 필터가 포함됩니다. 쿼리 실행 컨텍스트의 원점에 관계없이 동일한 변환이 발생했다고 가정했습니다.
편집 2 : 코드의 숨겨진 영역 (마지막 디버깅 리조트)의 플래그가 플러그인이 실행중인 사용자의 컨텍스트에서 서비스를 인스턴스화하지 못하게합니다. 모든 것이 잘 돌아갑니다. 시간과 도움을 주신 모든 분들께 감사드립니다.
아마도 보안 권한 문제가 아니라는 것을 확인할 가치가 있습니다. 관리자 대 사용자로 쿼리 할 때 더 많은 레코드가 표시됩니까? 여기에서 사용중인 사용자에게 관리자 보안 역할이 할당되어 있습니까? – BenPatterson1
두 개의 가져 오기 진술이 "on-after-after"및 "on-before-before"와 다른 것을 사용한 이후 완전히 동일하지 않다는 말입니까? –
@ BenPatterson1,이 문제를 처음 알았던 사용자와 내 자신의 사용자는 모두 관리자 수준의 권한을가집니다. 귀하의 의견에 감사드립니다. – Raine