【发布时间】:2016-12-23 02:11:11
【问题描述】:
我正在尝试使用 SuiteScript 2.0 向 NetSuite 中的记录类型添加一些自定义验证。
在客户端,我已经能够使用客户端脚本在提交之前验证字段。这很好用,并显示一条用户友好的错误消息来解释问题所在。
在服务器端,使用用户事件脚本,我也执行相同的验证。这会捕获不使用客户端脚本的其他来源(例如 CSV 上传)的违规行为。如果发现违规,脚本会使用错误模块抛出错误(例如 throw error.create({...}))
但是,用户可以执行某些不使用客户端脚本但修改记录的操作(例如,在记录的查看屏幕上按下 void 按钮)。如果用户事件脚本检测到违规,它最终会在空白屏幕上显示错误消息(格式为 json)。不是最用户友好的。
至少,有没有办法在未格式化为 JSON 的空白屏幕上显示消息?理想情况下,最好使用 message.create/show 模块在与按钮相同的屏幕上显示错误消息。
【问题讨论】:
-
这里提供了一个解决方案:stackoverflow.com/questions/38632350/… 但是,它似乎不起作用,因为它只是打印出更长的 json 错误消息。
-
我在 2.0 中还没有找到这样做的方法;您总是会收到 JSON 消息。在 1.0 中,如果您使用
nlapiCreateError抛出nlobjError,您会得到一个干净整洁的 NetSuite 页面,其中只有纯文本的错误消息。 -
这里提供了一个新的解决方案:stackoverflow.com/questions/38632350/… 看起来您需要做的只是抛出一个字符串而不是错误对象?
-
某种作品 - 它确实只返回字符串作为错误消息。但是,由于您没有在抛出的对象上指定 notifyOff,套件脚本将向脚本所有者发送电子邮件。您必须关闭套件脚本上的异常通知以避免这种情况。无法相信没有更好的支持从用户事件脚本向用户报告异常。
-
下面@Koby Pichkhadze 提供的解决方案工作正常,它解决了通知问题和JSON 问题。
标签: netsuite suitescript