Poniżej znajduje się kod, na który wpadłem, aby uruchomić Zapisane wyszukiwanie w NetSuite przy użyciu SuiteScript, utworzyć plik CSV z wynikami zapisanego wyszukiwania, a następnie wysłać wiadomość e-mail do pliku CSV. Kłopot w tym, że wyniki są ograniczone do 1000 rekordów. Zbadałem ten problem i wydaje się, że rozwiązaniem jest uruchomienie pętli, która dzieli się co 1000. Próbka tego, co według mnie jest używane do wycinania wyszukiwań, znajduje się również poniżej.Jak uzyskać ponad 1000 rekordów z zapisanego wyszukiwania SuiteScript?
Jednak nie wydaje mi się, żebym mógł włączyć cięcie do mojego kodu. Czy ktoś może mi pomóc połączyć kod podziału z moim oryginalnym kodem wyszukiwania?
var search = nlapiSearchRecord('item', 'customsearch219729');
// Creating some array's that will be populated from the saved search results
var content = new Array();
var cells = new Array();
var temp = new Array();
var x = 0;
// Looping through the search Results
for (var i = 0; i < search.length; i++) {
var resultSet = search[i];
// Returns an array of column internal Ids
var columns = resultSet.getAllColumns();
// Looping through each column and assign it to the temp array
for (var y = 0; y <= columns.length; y++) {
temp[y] = resultSet.getValue(columns[y]);
}
// Taking the content of the temp array and assigning it to the Content Array.
content[x] += temp;
// Incrementing the index of the content array
x++;
}
//Inserting headers
content.splice(0, 0, "sku,qty,");
// Creating a string variable that will be used as the CSV Content
var contents;
// Looping through the content array and assigning it to the contents string variable.
for (var z = 0; z < content.length; z++) {
contents += content[z].replace('undefined', '') + '\n';
}
// Creating a csv file and passing the contents string variable.
var file = nlapiCreateFile('InventoryUpdate.csv', 'CSV', contents.replace('undefined', ''));
// Emailing the script.
function SendSSEmail()
{
nlapiSendEmail(768, 5, 'Inventory Update', 'Sending saved search via scheduled script', '[email protected]', null, null, file, true, null, '[email protected]');
}
Poniższy kod jest przykładem tego, co znalazłem, który jest używany do zwrócenia więcej niż 1000 rekordów. Znowu, jako nowicjusz, nie mogę wydawać się włączać cięcia do mojego oryginalnego, działającego SuiteScript. Każda pomoc jest oczywiście bardzo doceniana.
var filters = [...];
var columns = [...];
var results = [];
var savedsearch = nlapiCreateSearch('customrecord_mybigfatlist', filters, columns);
var resultset = savedsearch.runSearch();
var searchid = 0;
do {
var resultslice = resultset.getResults(searchid, searchid+1000);
for (var rs in resultslice) {
results.push(resultslice[rs]);
searchid++;
}
} while (resultslice.length >= 1000);
return results;
Rockstar, twoją odpowiedzią jest Rockstar! Udało się pięknie ... dziękuję bardzo za czas i wysiłek, który mi pomógł! Tak bardzo doceniane. – Accounting
@ Rachunkowość Cieszę się, że pomogło. Twoje zdrowie!! – Rockstar
Napotkałem problem. Jeśli Zapisane wyszukiwanie jest powolne do wykonania, skrypt wyprowadza błędy i nie generuje pliku.Poprawiłem kryteria w moim Zapisanym wyszukiwaniu, aby wykonać je bardziej efektywnie, a problem został na razie rozwiązany. Obawiam się jednak, że może się on ponownie pojawić, gdy Zapisane wyszukiwanie zwiększy się do 1000 rekordów. Czy jest jakiś fragment kodu, który można dodać, aby czas SS został wykonany, zanim błąd zostanie usunięty? Z góry dziękuję za twój wgląd! – Accounting