如何在Netsuite中实现分页?

问题描述 投票:0回答:1

NetSuite 一次仅返回 1000 条记录,当我尝试获取超过 1000 条记录时,它就会超时。为了解决这个问题,我们可以使用分页机制。 有人有 NetSuite 中分页的经验吗?

pagination netsuite
1个回答
5
投票

您可以使用下面的代码来获取无限结果(SuiteScript 1.0):

var search = nlapiLoadSearch(null, SAVED_SEARCH_ID).runSearch();
var res = [],
    PAGE_SIZE = 1000, //MAX 1000, you can lower it than 1000 if search times out
    currentRes;

var i = 0;

while(i % PAGE_SIZE === 0){
  currentRes = (search.getResults(i, i+PAGE_SIZE) || []);
  res = res.concat(currentRes );
  i = i + currentRes.length;
}

也就是说,

search.getResults(page*PAGE_SIZE, (page*PAGE_SIZE + PAGE_SIZE))
应该为您提供第
n
页结果。请注意,
getResults()
有与其关联的 API 治理点。

从2016.1开始,SuiteScript 2.0有额外的API用于分页搜索结果,下面是代码片段:

/**
 *@NApiVersion 2.x
*/
require(['N/search'],
    function(search) {
        function loadAndRunSearch() {
            var mySearch = search.load({
                id: 'customsearch_my_so_search'
            });
            var myPagedData = mySearch.runPaged();
            myPagedData.pageRanges.forEach(function(pageRange) {
                var myPage = myPagedData.fetch(pageRange);
                myPage.data.forEach(function(result) {
                    var entity = result.getValue('entity');
                    var subsidiary = result.getValue('subsidiary');
                });
            });
        }
        loadAndRunSearch();
    });
© www.soinside.com 2019 - 2024. All rights reserved.