使用 Search.PagedData.fetch 方法
PagedData 是一个由 Search.runPaged(options)
方法返回的对象。它的工作方式与 UI 搜索完全相同。PagedData 对象包含 2 个重要属性,你可以在 Netsuite UI 的搜索结果页面的结果标题的右侧看到:
- count (结果总数)
- pageRanges (页面列表,在 UI 中作为组合框选择器提供)
options.pageSize 参数再次限制为 1000 个结果行。
PagedData.fetch 方法用于获取所需的结果部分(由 pageIndex 参数索引)。使用更多代码,你可以获得与 Search.ResultSet.each 相同的方便回调函数,而不受 4000 行限制。
// Assume that 'N/search' module is included as 'search'
// this search will return a lot of results (not having any filters)
var s = search.create({
type: search.Type.TRANSACTION,
columns : ['entity','amount'],
filters : []
});
var pagedData = s.runPaged({pageSize : 1000});
// iterate the pages
for( var i=0; i < pagedData.pageRanges.length; i++ ) {
// fetch the current page data
var currentPage = pagedData.fetch(i);
// and forEach() thru all results
currentPage.data.forEach( function(result) {
// you have the result row. use it like this....
var transId = result.id;
var entityId = result.getValue('entity');
var entityName = result.getText('entity');
var amount = result.getValue('amount');
});
}
让我们计算治理。我们有 7 个单元用于 runPaged()
,1 + count / 1000 个 pagedData.fetch 调用每个 5 个单元,所以:
G = 5 + ceil(计数/ 1000)* 5
示例:9500 行将占用 55 个单位。大约一半的 getRange 治理单位。