You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetSuite计算销售订单总重量UserEventScript脚本运行报错求助

NetSuite销售订单总重量计算脚本问题修复

现有代码错误点

  • 模块引入缺失:代码未引入SuiteScript必须的N/record模块,调用记录操作API时会触发未定义报错
  • 钩子选择错误:afterSubmit阶段获取的context.currentRecord为只读状态,直接调用setValue不会生效,也无法触发二次保存
  • 子列表索引错误:NetSuite SuiteScript 2.x所有子列表的行下标从0开始,现有循环从1开始遍历会跳过首行,且循环终止条件设置为i < lines+1会导致最后一次遍历索引超出范围,抛出无效行号错误
  • 空值未做兼容:如果行项目的单个重量字段无值,计算时会出现NaN异常,最终总重量赋值失败

修正后的User Event脚本(推荐用beforeSubmit触发)

/**
 *@NApiVersion 2.0
 *@NScriptType UserEventScript
 */
define(['N/record'],
    function(record) {
        function beforeSubmit(context) {
            var objRecord = context.newRecord;
            var lineCount = objRecord.getLineCount({sublistId: 'item'});
            var totalWeight = 0 ;
            // 子列表从0开始遍历到lineCount-1
            for (var i = 0; i < lineCount; i++) {
                var weight = objRecord.getSublistValue({
                    sublistId: 'item', 
                    fieldId: 'custcol_individual_weight', 
                    line: i
                }) || 0; // 空值默认取0避免NaN
                var quantity = objRecord.getSublistValue({
                    sublistId: 'item', 
                    fieldId: 'quantity', 
                    line: i
                }) || 0;
                totalWeight += weight * quantity;
            }
            objRecord.setValue({
                fieldId: 'custbody_items_total_weight',
                value: totalWeight
            });
        }
        return {
            beforeSubmit: beforeSubmit
        };
    });

部署注意事项

  • 脚本部署到销售订单记录类型,触发场景勾选创建、编辑即可
  • 确认自定义字段custcol_individual_weight、custbody_items_total_weight的权限已开放给脚本执行的角色,没有字段级权限限制
  • 如果需要实时在前端编辑时就显示总重量,可以配套使用Client Script的fieldChanged、sublistChanged钩子复用上面的汇总逻辑即可

内容的提问来源于stack exchange,提问作者etornet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 02:36:02