如何限制SuiteScript(1或2)中的搜索结果?

时间:2017-06-09 16:12:11

标签: netsuite suitescript

有没有办法限制通过SuiteScript返回的记录数量?我使用以下方法,但搜索仍然获得所有结果。如果我已达到最大值,我想要退回,我正在打破结果的迭代。我在文档中找不到任何内容。

在用户界面中,看起来人们可以限制返回的结果,即使我没有多少运气。 (也许是因为我加入......)

NS Seach Max Results

var accountSearch = search.create({
    type: search.Type.CUSTOMER,
    columns: searchColumns,
    filters: searchFilters
});

var searchResultsPagedData = accountSearch.runPaged({
    'pageSize': 1000
});

var max = 9;

for (var pageIndex = 0; pageIndex < searchResultsPagedData.pageRanges.length; pageIndex++) {

    var pageRange = searchResultsPagedData.pageRanges[pageIndex];

    if (pageRange.index >= max)
        break;

    var searchPage = searchResultsPagedData.fetch({ index: pageRange.index });

    // Iterate over the list of results on the current page
    searchPage.data.forEach(function (result) {
    }
}

3 个答案:

答案 0 :(得分:4)

为什么不将页面大小设置为您想要的最大结果数量,只迭代第一页(第0页)?或者,如果您要查找超过1000个结果,则可以通过设置pageIndex < max;而不是pageIndex < searchResultsPagedData.pageRanges.length;来限制页数

答案 1 :(得分:4)

使用getRange代替each来迭代结果。 getRange允许您指定startend索引以获取结果的特定切片。

答案 2 :(得分:1)

另一种方法:从评论中看来,您遇到的问题之一似乎是遇到了执行限制,因此您可以加载N/runtime模块并在每次提取前使用Script.getRemainingUsage()以确保您剩下足够的治理单位 - 如果不这样做就会中断或返回。