2017-02-19 76 views
0

我正在爲Microsoft CRM創建一個計時器應用程序。我已經創建了應用程序作爲Web資源已經和它的工作。它使用CRM的XRM客戶端代碼來完成這項工作。它需要更新CRM中的自定義實體中的數據。但是,定時器應用程序的要求已更改,即使用戶離開頁面,現在也需要保持活動狀態。因此需要在事件表單上打開,但用戶可以在CRM中的其他任何地方導航,並且需要保持開放並主動跟蹤時間。在Microsoft CRM的新窗口中彈出一個webresource

我首先想到的是剛剛流行網絡資源到按鈕點擊一個新的,單獨的窗口,並將它獨立運行。但是,如果代碼嵌入在表單中的Web資源中,如果它們離開不會卸載代碼?

我只使用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操作。