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

NetSuite销售订单添加行项目时获取item表自定义字段的方法

问题原因

你拿不到值的核心原因是 custitem_celigo_sfnc_salesforce_id 是物品(Item)主记录的自定义字段,不属于销售订单行子表的标准/自定义字段,所以直接在销售订单行上调用getCurrentSublistValue查询这个字段ID肯定返回空。另外你原有代码还存在几个明显错误:

  • 未定义test变量就调用alert(JSON.stringify(test)),会直接抛出JS异常导致脚本中断执行
  • context对象本身不存在custitem_celigo_sfnc_salesforce_id属性,你给SFID变量的赋值逻辑是无效的
正确实现方案

我们可以在用户选择销售订单行的物品后,先取到选中的物品ID,再通过字段快速查询接口拉取对应物品的自定义字段值,示例代码如下:

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(['N/record', 'N/search'], function(record, search) {

    function fieldChanged(context) {
        var currentRecord = context.currentRecord;
        var sublistName = context.sublistId;
        var sublistFieldName = context.fieldId;
        // 仅当修改销售订单行子表的物品字段时触发逻辑
        if (sublistName === 'item' && sublistFieldName === 'item') {
            // 拿到当前行选中的物品ID
            var selectItemId = currentRecord.getCurrentSublistValue({
                sublistId: 'item',
                fieldId: 'item'
            });
            if (!selectItemId) return true;
            // 快速查询对应物品的自定义字段值
            var itemLookupData = search.lookupFields({
                type: search.Type.INVENTORY_ITEM, // 如果是其他物品类型可以按需修改,或者替换为对应物品的内部类型ID
                id: selectItemId,
                columns: ['custitem_celigo_sfnc_salesforce_id']
            });
            // 拿到目标字段值
            var sfId = itemLookupData.custitem_celigo_sfnc_salesforce_id;
            // 此处可添加你的后续业务逻辑,比如赋值到行上其他字段、做校验等
            alert('对应物品的Salesforce ID为:' + sfId);
        }
        return true;
    }

    return {
        fieldChanged: fieldChanged
    };
});
补充优化说明

如果你的场景只是需要把这个值展示在销售订单行上,不需要额外逻辑处理,可以不用写脚本,直接在NetSuite后台做配置即可:

  • 新建一个销售订单行级自定义字段
  • 字段的来源设置为「物品」字段,来源字段选择custitem_celigo_sfnc_salesforce_id,保存后选择物品时会自动带出对应值,性能比脚本更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:45:03