2017-02-19 12 views
0

Microsoft CRM 용 타이머 응용 프로그램을 만들고 있습니다. 이미 웹 리소스로 응용 프로그램을 만들었고 작동합니다. CRM의 XRM 클라이언트 측 코드를 사용하여 작업을 수행합니다. CRM 내 사용자 지정 엔터티의 데이터를 업데이트해야합니다. 그러나 타이머 응용 프로그램에 대한 요구 사항이 변경되었으므로 사용자가 페이지에서 다른 곳으로 이동할 경우에도 활성 상태를 유지해야합니다. 따라서 사고 양식에서 열어야하지만 사용자가 CRM의 다른 곳으로 이동할 수 있으며 열린 상태를 유지하고 적극적으로 시간을 추적해야합니다.Microsoft CRM의 새 창에서 웹 리소스 팝업

내 첫 번째 생각은 웹 리소스를 버튼 클릭으로 새롭고 별도의 창에 띄우고 독립적으로 실행되도록하는 것이 었습니다. 그러나 코드가 웹 리소스 내부에 포함 된 경우 폼에서 멀리 이동하면 코드가 언로드되지 않습니까?

저는 몇 달 동안 Microsoft CRM으로 만 작업했기 때문에 모든 옵션을 모를 수 있습니다.

따라서 특정 질문 :

그들이 양식에서 멀리 이동하고 여전히 xRM을 클라이언트 라이브러리에 액세스 할 때 활성 상태를 유지 새 창에서 독립형 웹 리소스를 열 수 있습니까? (그렇다면 어떻게?)

대답이 '아니오'인 경우 다른 아이디어를 듣고 싶습니다.

감사합니다.

답변

0

이 시나리오를 해결하기 위해 필자는 2 개의 웹 리소스를 사용했습니다. 필요한 경우 정보를 수집하고 두 번째 웹 리소스에 보낼 수있는 사용자 정의 버튼이 양식의 하나 :

  // Collect fields we know exist at this point, because they are required fields on the case 
 
      var caseId = window.parent.Xrm.Page.data.entity.getId(); 
 

 
      if (caseId != '') { 
 
       var caseName = window.parent.Xrm.Page.data.entity.getPrimaryAttributeValue(); 
 
       var accountId = window.parent.Xrm.Page.getAttribute("customerid").getValue()[0].id; 
 
       var accountName = window.parent.Xrm.Page.getAttribute("customerid").getValue()[0].name; 
 

 
       // package paramters to pass to timer web resource 
 
       var customParameters = encodeURIComponent("caseid=" + caseId + "&casename=" + caseName + "&accountid=" + accountId + "&accountname=" + accountName); 
 
       // Open web resource 
 
       window.parent.Xrm.Utility.openWebResource("sp_casetimer", customParameters, 500, 200); 
 

 
      } else { 
 
       // Error message would go here - case must be saved first. 
 
      }

sp_casetimer 웹 자원은 구문 분석하고 숨겨진 필드에 저장 변수 독립적으로 기능 할 수 있습니다. /XRMServices/2011/OrganizationData.svc를 사용하여 사용자 정의 사례 엔티티에서 CRUD 작업을 수행합니다.