我无法获取item列表。我正在使用已保存的搜索,并希望从中创建所有项目记录ID的列表。 但它没有用。
我的代码
var loadSearch=nlapiLoadSearch('item','customsearch12');
var getData = loadSearch.runSearch();
var itemCol=new Array();
for(var i=0;i<getData.length;i++)
{
itemCol.push(getData[i].getId());
}
有人可以帮助我吗
答案 0 :(得分:6)
试试这段代码
var loadSearch=nlapiLoadSearch('item','customsearch12');
var getData = loadSearch.runSearch();
var itemCol=new Array();
getData.forEachResult(function (searchRow) {
itemCol.push(searchRow.getId());
return true;
});
当你使用nlapiLoadSearch时,结果是nlobjSearchResultSet,而不是像nlapiSearchRecord那样的数组。
如果您使用nlapiSearchRecord,那么您可以像尝试使用代码一样遍历结果,即使用索引
答案 1 :(得分:5)
Nitish上面给出的答案是完全正确的,但你还需要考虑一件事。
nlapiLoadSearch api一次返回4000条记录。
nlapiSearchRecord api一次只返回1000条记录,那么如果您保存的搜索包含超过1000条记录,该怎么办呢。
所以你会错过那些额外的物品。
所以这里的代码有更好的结果
//Searching the items
var searchResults = nlapiSearchRecord('item', 'customsearch12',null,null);
var searchedItemId;
var lastId;
var completeResults = new Array();
var arrNewFilters=[];
if (searchResults != null) {
completeResults = completeResults.concat(searchResults);
}
else {
completeResults = null;
nlapiLogExecution('Debug', 'No item found',
weight + ' Null result');
}
if (completeResults != null) {
if (searchResults.length == 1000) {
while (searchResults.length == 1000) {
//Initialize variable
lastId = "";
//Get Record Id of Last record,
//to search the item record again from that record
lastId = searchResults[999].getId();
//start after the last id searched
arrNewFilters.push(new nlobjSearchFilter("internalidnumber",
null, "greaterthan", lastId));
//Lets search again
var searchResults = nlapiSearchRecord('item', 'customsearch12',
arrNewFilters, null);
if (searchResults != null) {
//Append the search result to the result present before
completeResults = completeResults.concat(searchResults);
}
}
}
for (var result = 0; result < completeResults.length; result++) {
//Loop through the items
}
希望你能让我得到Nitish !!!
答案 2 :(得分:0)
以下是如何在NetSuite / NetScript中获取超过1k的结果的示例。
搜索“customsearch_tel_tg_by_trunk_type”并不真正相关。
答案 3 :(得分:0)
您可以使用回调函数逐个获取所有结果,直到所有记录都被迭代。
var search = nlapiLoadSearch('item','customsearch12');
var resultSet = loadSearch.runSearch();
var itemCol=new Array();
resultSet.forEachResult(function (iterator) {
itemCol.push(iterator.getId());
return true;
});
或者你可以使用nlobjResultSet的getResults加载它的几条记录
var search = nlapiLoadSearch('item', 'customsearch12');
var resultSet = search.runSearch();
var results = resultSet.getResults(0, 100);//get the results from 0 to 100 search results
var itemCol = new Array();
for(var i in results)
{
itemCol.push(results[i].getValue('id'));
}