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

SuiteScript 2.x N/search模块isdropshipitem查询恒返回false问题

SuiteScript 2.x查询装配物料字段返回值异常问题

问题现象

在对装配项(assembly item)记录执行关联成员/组件物料的查询操作时,使用SuiteScript 2.x的N/search模块获取结果出现如下异常:

  • 「Is Drop Ship(是否直运)」对应字段isdropshipitem的返回值始终为false
  • 成员物料上的两个自定义复选框字段返回值完全正常

后续使用N/query模块开展测试时,直运字段可正常返回正确值,但最初搭建完带关联逻辑的完整query执行时,成员物料上的自定义复选框字段又始终返回false。

测试代码

以下是简化后的测试代码(仅省略结果处理逻辑、对自定义复选框字段做了重命名处理),依次包含N/search实现、N/query实现:

require(['N/query', 'N/search'], (query, search) => {
    let itemList = [ /* 物料记录内部ID列表 */];
    
    // N/search 查询逻辑
    let itemFilt = [
                ["internalid","anyof",itemList]
        ],
        itemCols = [
                search.createColumn({ name : "itemid" })
            ,   search.createColumn({ name : "isdropshipitem" }) // 该字段返回值始终为false
            ,   search.createColumn({ name : "memberitem" })
            ,   search.createColumn({ name : "memberquantity" })
            ,   search.createColumn({ name : "custitem_checkbox_1" , join : "memberitem" }) // 该字段返回值始终正常
            ,   search.createColumn({ name : "custitem_checkbox_2" , join : "memberitem" }) // 该字段返回值始终正常
        ];
    let itemResults = search.create({ type : "assemblyitem" , filters : itemFilt , columns : itemCols }).run().getRange({ start : 0 , end : 1000 });

    itemResults.forEach(res => {
        // 此处返回值恒为false
        log.audit({ title : "直运复选框字段值" , details : res.getValue({ name : "isdropshipitem" }) });
    });

    ///////////////////////
    ///////////////////////
    ///////////////////////
    
    // N/query 查询逻辑(该模块问题已解决,无需关注)
    let compQuery = query.create({
            type : query.Type.ITEM
    });
    let filtOne = compQuery.createCondition({
            fieldId : "id"
        ,   operator : query.Operator.ANY_OF
        ,   values : itemList
    });
    compQuery.condition = compQuery.and(filtOne);
    
    let memberJoin = compQuery.joinFrom({
            fieldId : "item"
    //  ,   source : "itemmember" // 错误关联方式
        ,   source : "member"     // 正确关联方式
    });
    let memberItemJoin = memberJoin.joinTo({
            fieldId : "item"
        ,   target : "item"
    });
    
    compQuery.columns = [
            compQuery.createColumn({
                    fieldId : "id"
            })
        ,   compQuery.createColumn({
                    fieldId : "itemid"
            })
        ,   compQuery.createColumn({         // 该字段返回值始终正常
                    fieldId : "isdropshipitem"
            })
        ,   memberJoin.createColumn({
                    fieldId : "id"
                ,   alias : "memberitem.id"
            })
        ,   memberJoin.createColumn({
                    fieldId : "quantity"
                ,   alias : "memberitem.quantity"
            })
        ,   memberItemJoin.createColumn({
                    fieldId : "itemid"
                ,   alias : "memberitem.itemid"
            })
        ,   memberItemJoin.createColumn({    // 该字段曾返回值始终为false
                    fieldId : "custitem_checkbox_1"
                ,   alias : "memberitem.custitem_checkbox_1"
            })
        ,   memberItemJoin.createColumn({    // 该字段曾返回值始终为false
                    fieldId : "custitem_checkbox_2"
                ,   alias : "memberitem.custitem_checkbox_2"
            })
    ];
    
    let compResults = compQuery.run({ }).asMappedResults();
}

排查进展

  • 经定位,N/query模块的问题源于列关联配置错误:需要关联到member而非itemmember,修正后query模块中组件物料的字段取值已恢复正常,该部分问题无需再关注。
  • 目前仍未明确N/search模块下isdropshipitem复选框字段始终返回false的根因。当前临时方案是执行两次独立查询获取全量正确数据,该方案存在明显优化空间。
  • 代码中已通过注释明确标记出search模块返回结果异常的具体位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:27:17