首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何降低以下代码的治理成本

如何降低以下代码的治理成本
EN

Stack Overflow用户
提问于 2015-02-06 19:24:05
回答 2查看 1.1K关注 0票数 1

netsuite有一个限制您可以使用特定API(以及某些脚本)的频率。对于我正在做的事情,我相信以下是适用的成本: nlapiLoadSearch: 5 nlobjSearchResultSet.getSearch():10,它大约需要一个小时,但是每次我的脚本(后面的)出错,可能是因为这个原因。如何更改它,使其具有较低的治理成本?

代码语言:javascript
复制
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 
    });                 
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-06 21:11:16

nlapiLoadRecord使用5个单元,nlapiLoadSearch使用5个单元,而实际上是resultSet.forEachResult使用另外10个单元。除此之外,每个搜索结果都运行nlapiSubmitRecord,每个搜索结果将多使用10个单元。

在我看来,你对搜索结果所做的一切都是将行项添加到分类记录中。在完全添加所有行之前,您不需要提交记录。现在,您将在添加的每一行之后提交记录。

在您的nlapiSubmitRecord调用之后移动forEachResult。这将将您的治理(特别是执行时间)从每个搜索结果的10个单元减少到仅10个单元。

票数 4
EN

Stack Overflow用户

发布于 2015-02-12 07:46:24

不同的API与它们相关的成本不同--参见合适答案ID 10365。此外,不同类型的脚本(用户、计划等)对总使用限制有不同的最大限制。见“行李箱”ID 10481

您的脚本的消耗应该少于这个限制,否则NetSuite会抛出一个错误。您可以使用下面的代码行来度量您在代码中的不同位置上的剩余使用量。'RemainingUsage:'+nlapiGetContext().getRemainingUsage());nlapiLogExecution(“审核”、“脚本使用”)

避免最大使用量超过异常的一种策略是将脚本类型更改为“计划脚本”,因为这具有最大的限制。考虑到您的循环正在停止搜索,结果集可能是巨大的,这甚至可能导致计划脚本超出其限制。在这种情况下,您可能希望在代码中引入检查点并使其可重入。这样,如果您看到nlapiGetContext().getRemainingUsage()小于阈值,则将剩余的工作卸载到后续的计划脚本中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28373234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档