2016-07-29 2 views
1

Ich möchte erste Satz von tausend Datensätze und dann nächsten Satz von tausend Datensätze aus den Suchergebnissen von der erhalten Suchergebnisse .Wie fist Satz von tausend Datensätze und nächsten Satz von tausend Datensätze mit for Schleife in Netsuite 'N/Suche Modul'

Ich bekomme die erste Reihe von tausend Datensätze mit der Methode in der Versionssuite '2.0' Version 'N/Suche' Modul Methode (getRange (0,1000)).

Code:

var mySearch = search.load({ 
id: 'customsearch_employee' 
}); 
var searchResult = mySearch.run().getRange(0, 100); 
for (var i = 0; i < searchResult.length; i++) { 
var entity = searchResult[i].getValue({ 
name: 'entity' 
}); 
}); 

ich wissen will, wie nächste Satz von tausend Datensätze verarbeiten mit der for-Schleifen. Dank im Voraus

Antwort

2

SuiteScript 2.0 bietet eine Paging-API für Sie. Ich werde zuerst etwas erklären und dann ein Beispiel zeigen.

Nachdem Sie Ihre Suchobjekt erstellen mySearch statt run() aufzurufen, rufen Sie runPaged() eine ausgelagerte Suche zu laufen, die einen optionalen pageSize Parameter, die Sie, wie viele Ergebnisse pro Seite festlegen können. Der Standardwert ist 50.

runPaged gibt ein Objekt PagedData zurück, das die Liste der Seiten der Ergebnisse in seiner pageRanges Eigenschaft enthält. Sie rufen die Ergebnisse auf jeder Seite tatsächlich ab, indem Sie fetch auf der Seite aufrufen.

Dieses Beispiel stammt direkt von der Hilfeseite für N/search, aber ich habe einige erklärende Kommentare hinzugefügt.

/** 
*@NApiVersion 2.x 
*/ 
require(['N/search'], function(search) { 
    function loadAndRunSearch() { 
     // Load your search into memory 
     var mySearch = search.load({ 
      id: 'customsearch_my_so_search' 
     }); 

     // Run paged version of search with 1000 results per page 
     var myPagedData = mySearch.runPaged({ 
      "pageSize": 1000 
     }); 

     // Iterate over each page 
     myPagedData.pageRanges.forEach(function(pageRange){ 

      // Fetch the results on the current page 
      var myPage = myPagedData.fetch({index: pageRange.index}); 

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

       // Process the individual result 
       var entity = result.getValue({ 
        name: 'entity' 
       }); 
       var subsidiary = result.getValue({ 
        name: 'subsidiary' 
       }); 
      }); 
     }); 
    } 
    loadAndRunSearch(); 
}); 
2

sollten Sie in der Lage sein, den nächsten Bereich erhalten mit:

var searchResult = mySearch.run().getRange(1000, 2000); 

In einer Schleife können Sie die Länge überprüfen und alle Ergebnisse zu erhalten:

var searchResult = mySearch.run().getRange(0, 1000) || []; 
var i = 1000; 
while(searchResult.length >= 1000){ 
i+= 1000; 
searchResult = searchResult.concat((mySearch.run().getRange(i, i+1000) || [])); 
} 
Verwandte Themen