首页 > 解决方案 > preventDefault() 仅在标记完成事件上引发错误(D365 统一接口)

问题描述

我正在尝试为我们的一个活动实体中断 Mark Complete 保存事件。我有一个现有的脚本,它在统一接口之前工作得很好,但是由于我们切换到 UI,它会抛出一个丑陋的错误,从而导致糟糕的用户体验。

错误显示:“由于自定义设置,无法保存此表单。错误代码:0x83215605”。但是,在此弹出窗口之后它确实继续正常工作(它仍然阻止保存并正常工作,只是抛出一个错误,通知我保存阻止)。

我在没有其他自定义的新实体的 onSave 事件中插入了以下 Javascript:

function preventSave(executionContext) {
  e = executionContext.getEventArgs();
  e.preventDefault();
  console.log("Save prevented. Save mode: " + e.getSaveMode());
  return;
}

从控制台我可以看到,当我正常保存表单(保存模式 1)时,脚本仍然执行并阻止保存,没有错误。但是,当我将记录标记为完成(保存模式 58)时,会抛出错误消息以及来自 app.js 的控制台警告“传递给 getElementById() 的空字符串”。

我已经尝试过多个实体和多个表单,结果相同。其他任何人都可以验证他们是否能够使用标记完成来防止保存活动而不会发生此错误?作为辅助查询,是否有任何支持的方法来隐藏抛出的错误?我真的很感激任何建议。

动态版本信息: 服务器版本:9.1.0000.15631 客户端版本:1.4.376-2003.3

标签: javascriptdynamics-crmmicrosoft-dynamicspowerapps

解决方案


试试这个代码 onSave 事件:

function OnSaveEvent(executionContext, iOption) {
      var formContext = executionContext.getFormContext(); // get formContext

      //Need to use the following code.  This will suppress the dialog box
      formContext.data.entity.addOnSave(function () {

      });
}

推荐阅读