** SuiteScript 2.0 ** 在客户端脚本中创建搜索对象时出错

** SuiteScript 2.0 ** Error while creating search object in client script

searchResultSet.columns.length --> 未定义....

此代码中缺少什么?


函数 pageInit(scriptContext) {

    try{  
    var currentRecord = scriptContext.currentRecord;
    var searchObj = search.load({
       id:'customsearchvc_bt_duplicate_vendor_list'
    });

    var searchResultSet=searchObj.run();
    var noOfDupVendors = searchResultSet.length;  

    log.debug({details: "there are "+searchResultSet.columns.length+" duplicate vendors"});

    currentRecord.setText({
        fieldId: 'custrecordvc_merge_vendor_total_unique_v',
        text: noOfDupVendors
    });

    }catch(e){
        log.error("error at getinputdata stage","error detail is :"+e.message);
    }

searchResultSet 对象上没有 length 属性。该集合 实际上 不包含结果(我知道,这很奇怪)您需要遍历结果以求和。在你的情况下,你可以通过草率的 "it'll always be less than 1000" 解决方案逃脱:

var searchResults = searchResultSet.getResults({
    start: 0, 
    end: 1000
});

var noOfDupVendors = searchResults.length

无限 结果的解决方案可能如下所示:(未经测试):

var searchResults;
var noOfDupVendors = 0;

do{
    searchResults = searchResultSet.getResults({
        start: noOfDupVendors,
        end: noOfDupVendors+1000
    });
    noOfDupVendors += searchResults.length
}while(searchResults.length == 1000);

另一种(也未经测试)紧凑的方式,如果你可以指望 4000 或更少的结果将是:

var noOfDupVendors = 0;

searchResultSet.each(function(result){noOfDupVendors++; return true;})