Below is function to get all records for a give record type.
Requires the following SuiteScript module:
- N/search
Parameters:
- recordType - Internal ID of the scriptable record.
- filters - Array object of search filters. Supports filter type expression or non-expression.
- columns - Array object of search columns. Supports filter type expression or non-expression.
Return Value: Array of Objects (JSON) - all search columns defined.
/**
* @NApiVersion 2.1
*/
define(['N/search'], (search) => {
const getAllSearchResults = (recordType, filters, columns) => {
let results = [];
const recordSearch = search.create({
type: recordType,
filters: filters,
columns: columns
});
const recordSearchResultCount = recordSearch.runPaged().count;
if (recordSearchResultCount > 0) {
const MAX_RESULTS = 1000;
let searchResults = [],
currentSearchIndex = 0,
searchResultSlice = null;
const initRecordSearch = recordSearch.run();
do {
searchResultSlice = initRecordSearch.getRange(currentSearchIndex, currentSearchIndex + MAX_RESULTS);
if (searchResultSlice === null) {
break;
}
searchResults = searchResults.concat(searchResultSlice);
currentSearchIndex = searchResults.length;
}
while (searchResultSlice.length >= MAX_RESULTS);
searchResults.forEach((searchResult, index) => {
let searchResultRow = {};
initRecordSearch.columns.forEach((column) => {
const attrib = {
id: searchResult.getValue(column),
name: searchResult.getText(column),
};
if (attrib.name) {
searchResultRow[column.name] = attrib;
} else {
let columnName = column.name;
if (['formulanumeric', 'formulatext', 'formulacurrency'].includes(columnName)) {
columnName = column.label ? column.label : columnName+index;
}
searchResultRow[columnName] = attrib.id;
}
});
results.push(searchResultRow);
});
}
return results;
}
return {
getAllSearchResults
};
});