2015-10-27 4 views
1

Я хочу получить все записи в определенном типе записи, но я получил только 1000. Это код, который я использовал.Получить записи по странице мудрый в Netsuite с помощью RESTlet

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

Мне нужны два кода.

1) Получить целые записи в один раз

2) Получить страницу записей мудрое, передавая pageindex в качестве аргумента к getRecords [1-е => 0-1000, второй => 1000 - 2000, .. .........]

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

заранее спасибо

+0

Поможет ли это? https://gist.github.com/Rhaseven7h/8573669 –

ответ

4

вы не можете получить целые записи в то время. Тем не менее, вы можете сортировать результаты с помощью internalid и запоминать последний internalId первого результата поиска и использовать дополнительный фильтр в вашем следующем результатах поиска.

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(); 
} 

Опасайтесь, если количество записей велико, вы можете злоупотреблять лимитом управления с точки зрения времени и использования.

Если вы помните lastId, вы можете написать логику в RESTlet, чтобы принять id в качестве параметра, а затем использовать его как дополнительный фильтр для возврата nextPage.

Вы можете написать логику, чтобы получить nth pageresult, но вам, возможно, придется запускать поиск бесполезно n-1 раз.

Кроме того, я хотел бы предложить использовать nlapiCreateSearch().runSearch() как он может вернуть до 4000 записей

+1

Большое вам спасибо Prasun и Klitos Kyriacou. Он работает успешно. – Prabhu

2

Вот еще один способ получить более 1000 результатов по поиску:

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; 
} 
+0

Это решение решает также разбиение на страницы, спасибо :) results.getResults ((n-1) * 1000, ((n-1) * 1000) + 1000); – prasun

Смежные вопросы