Get records by page wise in Netsuite using RESTlet

老子叫甜甜 提交于 2019-12-23 01:55:14

问题


i want to get all the records in particular record type , but i got 1000 only. This is the code I used.

function getRecords() {
    return nlapiSearchRecord('contact', null, null, null);
}

I need two codes.

1) Get whole records at a single time

2) Get the records page wise by passing pageindex as an argument to the getRecords [1st =>0-1000 , 2nd =>1000 - 2000 , ...........]

function getRecords(pageIndex) {
    .........
}

Thanks in advance


回答1:


you can't get whole records at a time. However, you can sort results by internalid, and remember the last internalId of 1st search result and use an additional filter in your next search result.

var totalResults = [];
var res = nlapiSearchRecord('contact', null, null, new nlobjSearchColumn('internalid').setSort()) || [];
lastId = res[res.length - 1].getId();
 copyAndPushToArray(totalResult, res);
while(res.length < 1000)
{
res = nlapiSearchRecord('contact', null, ['internalidnumber', 'greaterthan', lastId], new nlobjSearchColumn('internalid').setSort());
 copyAndPushToArray(totalResult, res);
lastId = res[res.length - 1].getId();
}

Beware, if the number of records are high you may overuse governance limit in terms of time and usage points.

If you remember the lastId you can write a logic in RESTlet to take id as param and then use that as additional filter to return nextPage.

You can write a logic to get nth pageresult but, you might have to run search uselessly n-1 times.

Also, I would suggest to use nlapiCreateSearch().runSearch() as it can return up to 4000 records




回答2:


Here is another way to get more than 1000 results on a search:

function getItems() {

    var columns = ['internalid', 'itemid', 'salesdescription', 'baseprice', 'lastpurchaseprice', 'upccode', 'quantityonhand', 'vendorcode'];

    var searchcolumns = [];
    for(var col in columns) {
        searchcolumns.push(new nlobjSearchColumn(columns[col]));
    }

    var search = nlapiCreateSearch('item', null, searchcolumns);
    var results = search.runSearch();
    var items = [], slice = [], i = 0;
    do {
        slice = results.getResults(i, i + 1000);
        for (var itm in slice) {
            var item = {};
            for(var col in columns) { item[columns[col]] = slice[itm].getValue(columns[col]); }          // convert nlobjSearchResult into simple js object
            items.push(item);
            i++;
        }
    } while (slice.length >= 1000);

    return items;
}


来源:https://stackoverflow.com/questions/33369206/get-records-by-page-wise-in-netsuite-using-restlet

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!