NetSuite存款页面编辑模式行项目计数自定义字段脚本修复
问题修复方案
原脚本的核心问题
- 函数未正确关联:定义了
test_set_getValue但导出的是不存在的beforeSubmit函数,事件触发时根本不会执行目标逻辑 - 变量引用错误:使用未定义的
objRecord,实际获取的记录对象是myRecord - 子列表ID错误:存款(Deposit)记录没有
item子列表,统计支付行数量需要用sublistId: 'apply' - 语法结构错误:return语句的位置和格式不符合NetSuite 2.1脚本规范
修正后的完整脚本
/** * @NApiVersion 2.1 * @NScriptType UserEventScript */ define(['N/currentRecord'], (currentRecord) => { // 定义beforeSubmit事件处理函数 const beforeSubmit = (context) => { // 获取当前操作的记录对象(UserEvent中推荐用context.record而非currentRecord.get()) const myRecord = context.record; // 获取存款支付行的数量,sublistId为'apply' const numLines = myRecord.getLineCount({ sublistId: 'apply' }); // 设置自定义字段值 myRecord.setValue({ fieldId: 'custbody_ns_acs_item_count', value: numLines }); }; // 导出事件函数 return { beforeSubmit: beforeSubmit }; });
关键修正点说明
- 事件函数关联:将统计逻辑放到
beforeSubmit函数中,并正确导出,确保保存记录时触发 - 记录对象获取:在UserEvent脚本中优先使用
context.record获取当前记录,比currentRecord.get()更符合NetSuite最佳实践 - 子列表ID修正:存款记录的支付行子列表ID是
apply,如果需要统计的是存款的现金明细行,可改为sublistId: 'cash',根据实际需求调整 - 变量名统一:将所有记录对象引用统一为
myRecord,避免未定义错误 - 语法规范:调整箭头函数的写法,符合ES6语法和NetSuite 2.1脚本要求
内容的提问来源于stack exchange,提问作者Jayjay
相关产品推荐
相关产品推荐

