2017-02-19 27 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操作。

相关问题