SuiteScript 2.x脚本部署报错:表单脚本需实现客户端脚本类型
问题描述
上传SuiteScript脚本时收到报错:
SuiteScript version 2 file used for form scripts must implement client script type.
将脚本类型改为Client Script后,又收到报错:
必须为UserEvent Type
脚本功能目标:消除客户表单上持续弹出的“Consolidated days due”通知。
原脚本代码:
/** * @NApiVersion 2.x * @NScriptType UserEventScript */ define(['N/log', 'N/record'], function(log, record) { function beforeSubmit(context) { try { // Get the new record from the context var newRecord = context.newRecord; // Check if the 'consoldaysoverdue' field has changed if (context.type === context.UserEventType.EDIT && newRecord.isFieldChanged({ fieldId: 'consoldaysoverdue' })) { // Hide popup notifications for the 'consoldaysoverdue' field newRecord.setField({ fieldId: 'suppressFieldRecalculation', value: true }); } } catch (e) { // Log any errors log.error({ title: 'Error Hiding Popup Notification', details: e.toString(), }); } } return { beforeSubmit: beforeSubmit, }; } );
报错原因分析
- 第一次报错:你将UserEventScript类型的脚本部署到了「表单脚本」的客户端部署位置,但NetSuite要求表单脚本必须是
ClientScript类型,因此触发类型不匹配报错。 - 第二次报错:改成
ClientScript后,你仍然保留了UserEvent专属的beforeSubmit事件函数,但Client脚本不支持该事件,NetSuite无法识别合法的客户端事件,因此提示需要UserEvent类型。
解决方案
要消除客户端表单的弹出通知,必须使用ClientScript,并实现客户端专属的事件(比如fieldChanged)来处理字段变更。同时客户端操作当前表单记录需要使用N/currentRecord模块,而非服务器端的N/record。
修改后的脚本如下:
/** * @NApiVersion 2.x * @NScriptType ClientScript */ define(['N/log', 'N/currentRecord'], function(log, currentRecord) { // 字段变更时触发 function fieldChanged(context) { try { var currentRec = currentRecord.get(); // 检查是否是目标字段变更 if (context.fieldId === 'consoldaysoverdue') { // 设置禁用字段重计算提示 currentRec.setField({ fieldId: 'suppressFieldRecalculation', value: true }); } } catch (e) { log.error({ title: 'Error Hiding Popup Notification', details: e.toString() }); } } // 页面加载时初始化设置(可选,确保页面加载时就生效) function pageInit(context) { try { var currentRec = currentRecord.get(); currentRec.setField({ fieldId: 'suppressFieldRecalculation', value: true }); } catch (e) { log.error({ title: 'Error Initializing Suppression', details: e.toString() }); } } return { fieldChanged: fieldChanged, pageInit: pageInit }; } );
部署注意事项
- 部署脚本时选择「客户端脚本」类型,关联到目标客户表单。
- 确保脚本部署的「应用到表单」设置中包含需要生效的客户表单。
内容的提问来源于stack exchange,提问作者MARIAHCODES
相关产品推荐
相关产品推荐

