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
});
}发布于 2015-02-06 21:11:16
nlapiLoadRecord使用5个单元,nlapiLoadSearch使用5个单元,而实际上是resultSet.forEachResult使用另外10个单元。除此之外,每个搜索结果都运行nlapiSubmitRecord,每个搜索结果将多使用10个单元。
在我看来,你对搜索结果所做的一切都是将行项添加到分类记录中。在完全添加所有行之前,您不需要提交记录。现在,您将在添加的每一行之后提交记录。
在您的nlapiSubmitRecord调用之后移动forEachResult。这将将您的治理(特别是执行时间)从每个搜索结果的10个单元减少到仅10个单元。
发布于 2015-02-12 07:46:24
不同的API与它们相关的成本不同--参见合适答案ID 10365。此外,不同类型的脚本(用户、计划等)对总使用限制有不同的最大限制。见“行李箱”ID 10481
您的脚本的消耗应该少于这个限制,否则NetSuite会抛出一个错误。您可以使用下面的代码行来度量您在代码中的不同位置上的剩余使用量。'RemainingUsage:'+nlapiGetContext().getRemainingUsage());nlapiLogExecution(“审核”、“脚本使用”)
避免最大使用量超过异常的一种策略是将脚本类型更改为“计划脚本”,因为这具有最大的限制。考虑到您的循环正在停止搜索,结果集可能是巨大的,这甚至可能导致计划脚本超出其限制。在这种情况下,您可能希望在代码中引入检查点并使其可重入。这样,如果您看到nlapiGetContext().getRemainingUsage()小于阈值,则将剩余的工作卸载到后续的计划脚本中。
https://stackoverflow.com/questions/28373234
复制相似问题