【发布时间】:2014-04-24 15:39:26
【问题描述】:
我目前有一个 CRM 2013 On-Premise 的开发环境。 在我的自定义实体中,运行以下 JavaScript 代码:
function UpdateBPF() {
var requests = [];
requests.push(Xrm.Page.getAttribute('description').setRequiredLevel('none'));
requests.push(Xrm.Page.getAttribute('categoryid').setRequiredLevel('none'));
requests.push(Xrm.Page.getAttribute('priority').setRequiredLevel('none'));
requests.push(Xrm.Page.getAttribute('initialtype').setValue(1));
requests.push(Xrm.Page.data.save());
requests.push(event.returnValue = false);
$.when.apply(undefined, requests).always(function () {
Xrm.Page.data.setFormDirty(false);
RefreshForm();
});
};
function RefreshForm() {
Mscrm.ReadFormUtilities.openInSameFrame(window._etc, Xrm.Page.data.entity.getId());
};
我正在尝试做的事情:
- 更改选项集值时更改业务流程
切换选项集后我的代码在做什么:
- 启动自定义工作流以进行实际切换(工作正常,我需要刷新才能将所选工作流实际显示给用户)
- 不需要某些字段(如果未填写,则会阻止刷新)
- 保存表单(刷新以显示正确的业务流程后,从未保存值,因此从未设置选项集值)
- 防止出现“您尚未保存”弹出窗口。 (很可能我不再需要这个)
- 我将表单设置为不保存后不脏
为什么我要将大部分步骤推到 requests 变量中?
- 我希望在刷新表单之前肯定会出现这些值。很可能我做错了或效率不高。
什么有效:
- 在我的 CRM 2013 本地测试环境中一切正常。
- 保存
- 刷新
- 正确的业务流程和阶段
CRM 2013 Online 的问题:
- 保存和刷新不起作用
- IE 9,10,11 和 FireFox 完全崩溃。 Chrome 没问题。
- 关闭自动保存没有任何影响
我尝试保存的内容:
Xrm.Page.data.save()Xrm.Page.data.entity.save()
我尝试过的刷新:
Xrm.Page.data.refresh()Mscrm.ReadFormUtilities.openInSameFrame(window._etc, Xrm.Page.data.entity.getId())Xrm.Utility.openEntityForm("service_ticket", Xrm.Page.data.entity.getId(), null)var url = Xrm.Page.context.getClientUrl(); window.open(url + "/main.aspx?etn=ticket&pagetype=entityrecord&id=" + Xrm.Page.data.entity.getId() + "&newWindow=false", "_blank", null, false);
当我调试时,逐步通过顶部发布的代码,它会得到 then .when、.apply 和.always 但 SKIPS 里面的所有内容。我认为这总是意味着它总是运行......
当我尝试时:
Xrm.Page.data.save().then(
function () {
alert('Save worked, refresh');
Xrm.Page.data.refresh();
},
function () {
alert('Save failed!');
}
);
单步执行代码会点击保存。但是在点击之后,它跳过了里面的所有内容,然后是 IE(我一直在主要测试,因为 Chrome 似乎可以工作......),完全崩溃了。错误不会完全弹出,它更像是一个警告,说“IE 已停止工作”。
我在 StackOverflow 中看到了 1 个类似问题,没有接受的答案或根本不适合我的答案。前两段之前的 Xrm.Page.data.save() 函数是其中一个答案的示例。超级简单的样本,易于跟踪和逐步完成以进行测试,结果没有任何变化。
我也用 Google 搜索过(我最好的朋友),甚至还对我的问题进行了搜索。我相信在 Microsoft 站点上的另一个站点上的另一个帖子根本没有任何回应。根据所写的内容,我认为它与 StackOverflow 帖子的人是同一个人。
非常感谢您对问题的任何见解,无论是我的代码还是其他问题。
tl;dr Save and Refresh JavaScript 不适用于 CRM 2013 Online
【问题讨论】:
标签: javascript refresh dynamics-crm-2013 business-process