我刚刚开始使用 NetSuite,并尝试使用 ReSTLet 提取所有包含详细信息的项目。通过一些研究,我能够提取所有项目,但我现在所做的方式并不简单。我首先使用 nlapiSearchRecord 提取项目的所有 id,然后循环遍历每个 id,以使用 nlapiLoadRecord 获取每个项目的详细信息并将其添加到数组中。这样一来,就花费了很多时间。还有其他方法可以提取所有项目及其详细信息吗?下面是我的代码。
function getAllIDs() {
return nlapiSearchRecord('item', null, null, null);
}
function getRecord() {
var all_IDs = getAllIDs();
var len=all_IDs.length;
var result =new Array();
for(var i=0;i<all_IDs.length;i++) {
if(all_IDs[i].getRecordType()==="inventoryitem")
result[i]=nlapiLoadRecord(all_IDs[i].getRecordType(),all_IDs[i].id)
}
return result;
}
最佳答案
您可以使用 @Krypton 建议的内容,但最多始终会获得 1000 个结果。
如果您需要获得超过 1000 个(使用 Suitescript 2.0),请尝试以下操作:
var columns = [];
var filters = [['isinactive', 'is', 'F']];
columns.push(search.createColumn({ name: "itemid"}));
columns.push(search.createColumn({ name: "displayname"}));
columns.push(search.createColumn({ name: "salesdescription"}));
columns.push(search.createColumn({ name: "baseprice"}));
var inventoryitemSearch = search.create({
type: search.Type.INVENTORY_ITEM, //Change the type as per your requirement
filters: filters,
columns: columns
});
var arrResults = [];
var count = 1000;
var startIndex = 0;
var endIndex = 1000;
var resultSet= inventoryitemSearch.run();
while (count == 1000) {
var results = resultSet.getRange(startIndex, endIndex);
arrResults = arrResults.concat(results);
startIndex = endIndex;
endIndex += 1000;
count = results.length;
}
log.debug({title: 'arrResults ', details: arrResults });
关于javascript - 如何获取NetSuite上的所有项目列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48904935/