Netsuite возвращает только 1000 записей за раз, и когда я пытаюсь получить более 1000 записей, он переходит в тайм-аут. для решения этой проблемы мы можем использовать механизм поискового вызова. Есть ли у кого-нибудь опыт работы с пейджингом в NetSuite? Заранее спасибо.Как реализовать пейджинг в Netsuite?
2
A
ответ
4
Вы можете использовать ниже код, чтобы принести бесконечные результаты (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();
});