搜索不处理项目记录

时间:2013-09-20 06:35:42

标签: netsuite

我无法获取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());
}

有人可以帮助我吗

4 个答案:

答案 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”并不真正相关。

Complete sample of 1k+ results fetch in NetSuite/NetScript

答案 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'));
    }