javascript - 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
解决方案
试试这个代码 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 () {
});
}
推荐阅读
- ssl - 如何将 Cpanel 自动生成的 SSL 下载为(key.pem 和 cert.pem)
- lua - loadstring 和 Lua 中普通函数定义的区别?
- html - 从标签外部提取 HTML
我正在尝试提取位于
<table>
标签上方和下方的 HTML 部分,例如从下面的示例 html 中:sample_html = """ <html> <title><b>Main Title</b></Title> <b>more</b> <b>stuff</b> <
- node.js - 使用 angular8、nodejs 和 multer 上传视频时出现意外字段
- ajax - Typo3 后端加载覆盖和微调器不会仅在 Firefox 中消失
- c# - .NET 框架从 3.5 升级到 4.6 后 C/C++ DLL 失败
- javascript - 用于顺序执行承诺函数的未知长度数组
- angular - 如何以角度8循环iframe
- linux - 在远程机器上运行命令并将其输出存储在远程机器上的变量中
- java - 如果在收集时保证调用 finalize(),年轻代是否仍能获得速度优势?