对于netsuite,您可以使用某些API(以及某些脚本)的频率有限制。对于我正在做的事情,我相信以下是适用的费用: nlapiLoadSearch:5 nlobjSearchResultSet.getSearch():10 它需要大约一个小时,但每次我的脚本(后面)错误输出,可能是由于这个。如何更改它以降低治理成本?
function walkCat2(catId, pad){
var loadCategory = nlapiLoadRecord("sitecategory", "14958149");
var dupRecords = nlapiLoadSearch('Item', '1951'); //load saved search
var resultSet = dupRecords.runSearch(); //run saved search
resultSet.forEachResult(function(searchResult)
{
var InterID=(searchResult.getValue('InternalID')); // process- search
var LINEINX=loadCategory.getLineItemCount('presentationitem');
loadCategory.insertLineItem("presentationitem",LINEINX);
loadCategory.setLineItemValue("presentationitem", "presentationitem", LINEINX, InterID+'INVTITEM'); //--- Sets the line value.-jf
nlapiSubmitRecord(loadCategory , true);
return true; // return true to keep iterating
});
}
答案 0 :(得分:4)
nlapiLoadRecord
使用5个单位,nlapiLoadSearch
使用5个,实际上resultSet.forEachResult
使用另外10个。最重要的是,您为每个搜索运行nlapiSubmitRecord
结果,每个结果将使用10个单位 。
在我看来,您对搜索结果的所有操作都是将行项目添加到类别记录中。在完成添加所有行之前,您无需提交记录。现在,您在添加的每一行之后提交记录。
在nlapiSubmitRecord
来电之后移动forEachResult
。这将使您的治理(以及特别是您的执行时间)从每个搜索结果10个单位减少到仅10个单位。
答案 1 :(得分:0)
不同的API具有与之相关的不同成本[请参阅suiteanswers ID 10365]。此外,不同类型的脚本(用户,计划等)对总使用限制具有不同的最大限制。 [见suiteanswers ID 10481]
您的脚本应该消耗少于该限制,否则NetSuite将抛出错误。 您可以使用以下代码行来衡量代码中不同点的剩余使用情况。 nlapiLogExecution(' AUDIT','脚本使用',' RemainingUsage:' + nlapiGetContext()。getRemainingUsage());
避免最大使用率超出异常的一种策略是将脚本类型更改为"预定脚本"因为那有最大限度。鉴于您的循环正在处理搜索,结果集可能很大,甚至可能导致计划的脚本超出其限制。在这种情况下,您可能希望在代码中引入检查点并使其可重入。这样,如果您看到nlapiGetContext()。getRemainingUsage()小于阈值,则将剩余的工作卸载到后续的计划脚本。