2017-04-18 48 views
0

我一直試圖建立一個suitelet允許保存的搜索到的項目記錄的集合在NetSuite的運行使用suitescript 1.0Suitescript分頁

分頁是很容易在其他地方,但我不能左右我的頭如何在NetSuite中做到這一點。

例如,我們有3,000個項目,我試圖將結果限制爲每頁100個。

我竭力要了解如何應用開始行和最大行參數作爲過濾器,所以我可以運行搜索,從我的搜索

我見過大量的腳本返回的記錄數這可以讓你超過1000條記錄的限制,但我試圖扼殺屏幕上顯示的金額。但我很想知道如何做到這一點。

任何提示,不勝感激

function searchItems(request,response) 
{ 
    var start = request.getParameter('start'); 
    var max = request.getParameter('max'); 

    if(!start) 
    { 
     start = 1; 
    } 
    if(!max) 
    { 
     max = 100; 
    } 

    var filters = []; 
    filters.push(new nlobjSearchFilter('category',null,'is',currentDeptID)); 
    var productList = nlapiSearchRecord('item','customsearch_product_search',filters); 
    if(productList) 
    { 
     response.write('stuff here for the items'); 
    } 
} 
+0

您使用的是什麼版本的NetSuite?是否有任何理由不使用SuiteScript 2.0?它們支持內置於「N/search」模塊的分頁查詢。 –

回答

1

可以接近這個幾種不同的方法。無論哪種方式,您都一定需要通過有意義且一致的內容對搜索結果進行排序,如通過內部ID。確保您已將結果按保存的搜索定義排序或在腳本中添加搜索列。

您可以繼續按照原樣繼續構建搜索,然後僅使用productList陣列上的原生slice method。您將使用您的startend參數作爲參數適當地傳遞給slice

另一種方法是使用異步API進行搜索。這將類似於此:

var search = nlapiLoadSearch("item", "customsearch_product_search"); 
search.addFilter(new nlobjSearchFilter('category',null,'is',currentDeptID)); 
var productList = search.runSearch().getResults(start, end); 

有關此方法的更多的參考,請查閱題爲「搜索API」 NetSuite的幫助頁和參考頁nlobjSearch