NetSuite Suitelet脚本:如何用forEachResult()处理超4000行结果集
使用forEachResult()处理NetSuite超过4000行的结果集
原代码中each()方法存在4000行的返回限制,要突破这个限制,需结合runPaged()和forEachResult()实现分页遍历所有结果,具体代码如下:
var resultNumber = 0; // 以分页方式运行查询,可自定义每页行数(最大支持1000行) var pagedData = studentRecordsObj.runPaged({pageSize: 1000}); // 遍历所有分页 pagedData.pageRanges.forEach(function(pageRange) { var page = pagedData.fetch({index: pageRange.index}); // 用forEachResult()处理当前页的所有结果 page.data.forEachResult(function(result) { log.debug("processing row #", ++resultNumber); sponsorshipNumberField.addSelectOption({ value: result.id, text: result.getValue({name: 'custrecord12'}) + ' ' + result.getValue({name: 'custrecord_name'}), }); // forEachResult()无需返回true,会自动遍历当前页全部行 }); });
关键说明:
runPaged()将查询结果拆分为多个分页,默认每页1000行,可通过pageSize参数调整- 通过
pageRanges获取所有分页索引,再用fetch()获取对应页的具体数据 forEachResult()无4000行限制,会处理当前页内所有结果,无需像each()那样返回true维持遍历
内容的提问来源于stack exchange,提问作者Norberto Locsin Jr
相关产品推荐
相关产品推荐

