保存CRM表单时发生JavaScript服务正忙错误?

保存CRM表单时发生JavaScript服务正忙错误?,javascript,dynamics-crm,xrm,Javascript,Dynamics Crm,Xrm,CRM 365内部部署 我有一个Accounts.js,其中包含以下简化的示例代码: Xrm.Page.data.save().then( function() { Xrm.Utility.alertDialog("Record saved"); }, function(error) { Xrm.Utility.alertDialog(error.message); }); 其思想是表单保存,然后当异步保存完成时,它会触发警报对

CRM 365内部部署

我有一个
Accounts.js
,其中包含以下简化的示例代码:

Xrm.Page.data.save().then(
    function() {
        Xrm.Utility.alertDialog("Record saved");
     },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    });
其思想是表单保存,然后当异步保存完成时,它会触发警报对话框,说“记录已保存”

问题是错误函数正在被触发,但错误只是“serviceIsBusy”


有人能解释一下如何解决这个问题或者问题是什么吗?

实际上
Xrm.Page.data.save()
是从实体表单调用相同的保存按钮操作,但是如果从表单保存事件本身调用此方法,那么它将以循环结束

由于您希望使用
.then()
处理程序来满足自定义需要,因此可以阻止默认的
save
操作,并像您所做的那样调用手动
save

你可以理解形式


遗憾的是,官方的方式不适用于内部部署CRM 365。我完全不知道为什么,甚至更少的时间来排除故障

我在堆栈溢出的某个地方找到的解决方案是这种“旧”方式:

   //trigger form save and wait 1 sec
    Xrm.Page.data.entity.save();
    setTimeout(function () {
        saveAccountOK(context);
    }, 3000);

谢谢你的回复。当我看到这一点时,我高兴得跳了起来,因为它看起来确实像解决方案。遗憾的是,服务繁忙仍然返回。上下文已正确传入,但仍会生成错误。我目前正在阅读你的链接,其中建议使用计时器等待保存,这是我已经尝试过的,它可以工作。但我希望它能起作用,因为它应该是推荐的方式?再次感谢。@DaveC,因此它只能与settimeout一起工作。。奇怪的是,我还从表单中删除了所有其他java,并注释掉了插件的核心。还是一样的结果。这是一个使用计时器的工作解决方案,但我不喜欢延迟是固定的事实:/我很愿意接受你的答案,但不幸的是,尽管它看起来是正确的,但它对我来说并不适用。@DaveC我同意,这不是完美的解决方案。鉴于这一要求,在没有任何正式文件的情况下,我将采用社区确定的支持解决方案。
   //trigger form save and wait 1 sec
    Xrm.Page.data.entity.save();
    setTimeout(function () {
        saveAccountOK(context);
    }, 3000);