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

SuiteScript 2.X客户端脚本无法设置子列表值问题求助

NetSuite销售订单ClientScript问题:位置为79时无法取消勾选createwo复选框

我需要在销售订单录入行项目时,当位置为特定ID(79)时取消勾选createwo复选框。已经通过console.log()确认能获取到位置值,但设置复选框状态始终无效。尝试过新旧两段脚本仍未解决,求解决方案。

旧代码

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/action', 'N/currentRecord', 'N/record', 'N/transaction'],
/**
 * @param{action} action
 * @param{currentRecord} currentRecord
 * @param{record} record
 * @param{transaction} transaction
 */
function(action, currentRecord, record, transaction) {
    
    /**
     * Function to be executed after sublist is inserted, removed, or edited.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     */
    function sublistChanged(scriptContext) {
        var recLoc = scriptContext.currentRecord.getValue('location');

        if(recLoc == 79) {
            var line = nlapiGetLineItemCount('item');

            nlapiSetLineItemValue('item','createwo',line,'F');
        };
    }

    return {
        sublistChanged: sublistChanged
    };
    
});

更新后的代码

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/action', 'N/currentRecord', 'N/record', 'N/transaction'],
/**
 * @param{action} action
 * @param{currentRecord} currentRecord
 * @param{record} record
 * @param{transaction} transaction
 */
function(action, currentRecord, record, transaction) {
    
    /**
     * Function to be executed after sublist is inserted, removed, or edited.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     */
    function sublistChanged(scriptContext) {
        var currRec = scriptContext.currentRecord;
        var sublistId = scriptContext.sublistId;
        var recLoc = currRec.getValue({
            fieldId: 'location'
        });
        
        if(recLoc === '79') {
            if(sublistId === 'item') {
                console.log('success');

                currRec.setCurrentSublistValue({
                    sublistId: sublistId,
                    fieldId: 'createwo',
                    value: false,
                    ignoreFieldChange: true
                });
            };
        };
    }

    return {
        sublistChanged: sublistChanged
    };
    
});

解决方案及修正代码

问题分析

  1. 旧代码混用了NetSuite 1.x(nlapi开头)和2.x API,导致执行逻辑异常
  2. 更新后的代码存在类型匹配错误:位置ID通过getValue返回的是数字类型,用字符串'79'匹配会失败
  3. 未提交子列表变更,导致设置的复选框状态无法被系统保存

修正后的代码

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/currentRecord'],
function(currentRecord) {
    
    function sublistChanged(scriptContext) {
        var currRec = scriptContext.currentRecord;
        var sublistId = scriptContext.sublistId;
        
        // 获取位置ID,返回值为数字类型
        var recLoc = currRec.getValue({fieldId: 'location'});
        
        // 仅处理item子列表,且位置ID匹配数字79
        if (recLoc === 79 && sublistId === 'item') {
            console.log('触发位置79的createwo取消逻辑');
            
            // 设置当前子列表行的createwo为未勾选
            currRec.setCurrentSublistValue({
                sublistId: sublistId,
                fieldId: 'createwo',
                value: false,
                ignoreFieldChange: false
            });
            
            // 提交子列表变更,确保设置生效
            currRec.commitCurrentSublist({sublistId: sublistId});
        }
    }

    return {
        sublistChanged: sublistChanged
    };
    
});

关键修正点

  • 移除不必要的模块依赖,仅保留N/currentRecord
  • 用数字79匹配位置ID,避免类型不匹配问题
  • 将ignoreFieldChange设为false,确保字段变更能被系统识别
  • 添加commitCurrentSublist提交子列表变更,保证设置的状态被保存
  • 合并条件判断逻辑,简化代码结构

额外排查建议

  • 确认createwo字段的实际ID是否正确,可通过NetSuite自定义字段界面查看
  • 测试时打开浏览器控制台,检查是否有报错信息
  • 如果需要批量处理所有行,可使用getLineCount遍历子列表所有行进行设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:52:54