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

SuiteScript 2.0:Suitlet中子列表创建与数据添加问题排查

我来帮你分析下问题所在,以及如何修复这个Suitelet子列表的问题:

问题根源:子列表类型选错了

你用的serverWidget.SublistType.LIST是NetSuite的关联选择型子列表,这类子列表是用来关联系统已有记录(比如选择客户、供应商)的,不支持添加自定义字段(比如你要的复选框),这就是复选框无法显示的核心原因。

修复方案

要实现自定义字段(复选框)+ 手动填充销售订单商品的需求,你需要把子列表类型换成serverWidget.SublistType.INLINEEDITOR,同时补充加载销售订单数据的逻辑。

完整修正代码

/** 
 * @NApiVersion 2.0 
 * @NScriptType suitelet 
 */ 
define(['N/ui/serverWidget', 'N/record'],function(serverWidget, record) { 
    function onRequest(context) { 
        if (context.request.method === 'GET') { 
            var form = serverWidget.createForm({ 
                title : 'Sales Order Items with Checkbox' 
            }); 

            // 关键:改用INLINEEDITOR类型子列表,支持自定义字段和手动填充数据
            var sublist = form.addSublist({ 
                id : 'custpage_salesorder_items', 
                type : serverWidget.SublistType.INLINEEDITOR, 
                label : 'Sales Order Items' 
            }); 

            // 添加复选框字段,注意ID用custpage_前缀避免系统冲突
            var checkbox = sublist.addField({ 
                id : 'custpage_select', 
                label : 'Select', 
                type : serverWidget.FieldType.CHECKBOX 
            }); 
            // 可选:设置为可编辑,默认就是ENTRY类型,可省略
            checkbox.updateDisplayType({displayType: serverWidget.FieldDisplayType.ENTRY}); 

            // 添加商品相关字段,示例:商品ID、名称、数量
            var itemIdField = sublist.addField({ 
                id : 'custpage_item_id', 
                label : 'Item Internal ID', 
                type : serverWidget.FieldType.TEXT 
            }); 
            var itemNameField = sublist.addField({ 
                id : 'custpage_item_name', 
                label : 'Item Name', 
                type : serverWidget.FieldType.TEXT 
            }); 
            var quantityField = sublist.addField({ 
                id : 'custpage_quantity', 
                label : 'Quantity', 
                type : serverWidget.FieldType.INTEGER 
            }); 

            // 加载目标销售订单(这里替换成你的销售订单ID)
            var salesOrderId = 12345; // 改成实际的SO ID
            var salesOrder = record.load({
                type: record.Type.SALES_ORDER,
                id: salesOrderId,
                isDynamic: false
            });

            // 获取销售订单的item子列表行数
            var itemCount = salesOrder.getLineCount({sublistId: 'item'});

            // 遍历销售订单商品行,填充到自定义子列表
            for(var i=0; i<itemCount; i++){
                var itemId = salesOrder.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'item',
                    line: i
                });
                var itemName = salesOrder.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'displayname',
                    line: i
                });
                var quantity = salesOrder.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'quantity',
                    line: i
                });

                // 设置自定义子列表的值
                sublist.setSublistValue({
                    id: 'custpage_select',
                    line: i,
                    value: false // 默认不勾选
                });
                sublist.setSublistValue({
                    id: 'custpage_item_id',
                    line: i,
                    value: itemId
                });
                sublist.setSublistValue({
                    id: 'custpage_item_name',
                    line: i,
                    value: itemName
                });
                sublist.setSublistValue({
                    id: 'custpage_quantity',
                    line: i,
                    value: quantity
                });
            }

            context.response.writePage(form); 
        } 
    } 
    return { onRequest: onRequest }; 
});

关键说明

  1. 子列表类型切换:INLINEEDITOR是支持自定义字段和手动填充数据的标准子列表类型,完全符合你的需求。
  2. 字段ID规范:所有自定义字段ID都加上custpage_前缀,避免和NetSuite系统内置字段ID冲突。
  3. 销售订单数据加载:引入N/record模块加载目标销售订单,遍历其item子列表,把商品信息同步到自定义子列表中。
  4. 复选框设置:现在复选框能正常显示,并且可以设置默认勾选状态(示例中设为false)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:24:02