Scenario:
While creating saved searches, after getting its result we may need to iterate the result sometimes after the iteration only one item may show in the console(or any output platform).
Solution:
The searchResults.run() method need a return true statement to continue the iteration. In Suite script, there is no break statement to break the iteration or no continue statement for continuing the iteration. For this netsuite uses return false and return true statements respectively.
Eg:
the following example creates a search for fetching accounts from the account records according to the subsidary.
var accountSearchObj = search.create({
type: "account",
filters:
[
["subsidiary","anyof",subsidary],
"AND",
["type","anyof","Income","Expense","OthIncome","OthExpense"],
"AND",
["isinactive","is","F"],
"AND",
["issummary","is","F"]
],
columns:
[
search.createColumn({name: "internalid", label: "Internal ID"}),
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({name: "displayname", label: "Display Name"}),
search.createColumn({name: "type", label: "Account Type"}),
search.createColumn({name: "description", label: "Description"}),
search.createColumn({name: "balance", label: "Balance"}),
search.createColumn({name: "custrecord_fam_account_showinfixedasset", label: "Show in Fixed Assets Management"})
]
});
var searchResultCount = accountSearchObj.runPaged().count;
log.debug("Result count",searchResultCount);
var resArr = []
accountSearchObj.run().each(function(result){
// .run().each has a limit of 4,000 results
var accId = result.getValue({
name: 'internalid'
});
var accountName = result.getValue({
name: 'name'
});
resArr.push({
accountId: accId,
accountName: accountName
})
return true;
});
return resArr