使用 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({pa​g​e​S​i​z​e : 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 治理单位。