0

我正在为 Microsoft CRM 创建一个计时器应用程序。我已经将应用程序创建为 Web 资源并且它可以工作。它使用 CRM 的 XRM 客户端代码来完成这项工作。它需要更新 CRM 中自定义实体中的数据。然而,对计时器应用程序的要求已经改变,即使用户离开页面,它现在也需要保持活动状态。所以它需要在事件表单上打开,但随后用户可以在 CRM 中的其他任何地方导航,它需要保持打开状态并积极跟踪时间。

我的第一个想法是在单击按钮时将 Web 资源弹出到一个新的单独窗口中并让它独立运行。但是,如果代码嵌入到表单中的 Web 资源中,如果它们离开,代码不会被卸载吗?

我只使用 Microsoft CRM 几个月,所以我可能不知道所有选项。

所以具体的问题:

是否可以在新窗口中打开一个独立的 Web 资源,当他们离开表单并仍然可以访问 XRM 客户端库时保持活动状态?(如果有,怎么做?)

如果答案是否定的,那么我很想听听其他想法。

谢谢你。

4

1 回答 1

0

为了解决这种情况,我使用了 2 个网络资源。表单上有一个自定义按钮,用于收集所需的案例信息并将其发送到第二个 Web 资源:

            // 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 Web 资源解析变量并将其存储到隐藏字段中,并且可以独立运行。我使用 /XRMServices/2011/OrganizationData.svc 然后对我的自定义案例时间实体执行 CRUD 操作。

于 2017-02-23T02:57:55.847 回答