2016-11-11 67 views
1

searchResultSet.columns.length - > undefined ....** SuiteScript 2.0 **在客户端脚本中创建搜索对象时出错

此代码缺少什么?


功能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); 
    } 
+2

尽管我的答案,一个很好的方法来完成摹您共享的代码实际上是一个动态字段,其结果来自摘要式搜索。不需要SuiteScript。查看Netsuite帮助以获取更多信息:使用摘要搜索结果导出的值创建自定义字段。 –

回答

2

还有就是searchResultSet对象没有length属性。该集不实际上包含结果(我知道,这很奇怪)你需要遍历结果来完成它们。在你的情况,你可以逃脱马虎“它永远是小于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;}) 
+0

谢谢你谢谢:) ..这工作,是的,我看到你的观点:) – FreeMarker12