2012-12-11 2 views
0

현재 JS가 실행되는 CRM 버전을 결정하는 두 가지 방법이 있습니다. 주소는 유사하지만 온 라인 또는 온 프레미스에 따라 달라집니다. 나는 그것들을 통합하려했지만 아래의 코드처럼 변수에 의존하고있다. 더 깔끔한 솔루션 (조직 데이터 용 서비스에 대한 올바른 URL을 선택하는 솔루션)은 무엇입니까? 무엇보다도 JavaScript를 사용하여 OrganizationData.svc에 대한 URL 문자열 만들기

var isOnLine = true; 
var organizationName = Xrm.Page.context.getOrgUniqueName(); 
var organizationUrl 
    = "http" + (isOnLine ? "s" : "") + "://" 
    + parent.window.location.host 
    + (isOnLine ? "" : "/" + organizationName) 
    + "/XRMServices/2011/OrganizationData.svc"; 

, 나는 뭔가 (확실하지하지만 무엇)의 호출에 의해 서비스의 URL을 얻는 방법을 싶습니다. 가능하지 않은 경우 현재 실행중인 스크립트가 온라인 또는 사내 설치에 배포되었는지 감지하는 방법을 제안하고자합니다.

(사용 가능한 경우) 방법이 현재 버전 인 인 경우 버전과 독립적으로 작동하는 것이 중요합니다 ( 문을 사용하는 경우).

답변

1
  1. parent.window.location.host (지원되는지 확실하지 않음)을 사용하지 않습니다.
  2. 조직 이름은 온라인 버전이든 온 프레미스 (불필요하게)이든간에 무시합니다.
  3. 온 - 프레미스가 보안 HTTP에 설정되어 있거나 다른 플래그가 필요한 경우 호출이 실패합니다.
  4. 제 제안은 CRM 2011 (이전 버전 4는 REST가 아닌 SOAP 사용)에 초점을 맞추는 것입니다.
  5. 실제 조직 데이터 서비스의 경우 아래 기능을 사용하거나 선을 포함 할 수 있습니다.
function getOrganizationDataService(){ 
    return Xrm.Page.context.getServerUrl() 
    + "/XRMServices/2011/OrganizationData.svc"; 
} 
+0

다음 버전 (예 : 2013)에서 어떻게 작동합니까? –

+0

@CRMconfusee 확실하지 않습니다. 지금까지 내가 알기로는 REST 서비스에 대한 지원이있을 것이므로 이름에서 가장 극적인 변화는 올해 * 2011 *가 * 2013 *과 교환 될 수 있다는 것입니다. 그러나, 저것은 그러나 나 부분에 숙고이다는 것을 명심하십시오. –

1

나는이 샘플을 보길 권장한다 : Sample: Create, Retrieve, Update and Delete Using the REST Endpoint with JavaScript. 특히

:

sample_/스크립트/SDK.REST.js 웹 자원에 대한 REST 엔드 포인트를 사용하여 비동기 데이터 작업을 단순화 재사용 가능한 일반 도서관. 효과적으로과 같이 REST OrganizationData 엔드 포인트를 구축 처음 몇 기능 특히

은 (여기 몇 가지 단계를 잘라, 그래서 샘플 코드를 볼 수 있는지 확인했습니다) :

Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/"; 
+0

당신에 대한 링크를 보여 주었다 코드는 * getServerUrl * 전화의 끝에 슬래시에 대한 보호 것으로 보인다. 그것에 대해 걱정할 필요가 있습니까? (나는 주제에 대한 새로운 질문을하고 그것에 당신을 언급했다.) –

+0

나는 마이크로 소프트 샘플을 확실히 알지 못한다. 그렇기 때문에 아마도 슬래시에 대해 지킬만한 가치가있을 것이다. –

관련 문제