套件上的 Netsuite USAGE_LIMIT_EXCEEDED 错误

Netsuite USAGE_LIMIT_EXCEEDED error on suitelet

我创建了一个 suitelet 脚本,其中在 suitelet 中设置装配构建中的订单项乘以数量。即,如果数量为 2,则将在该项目的 suitelet 中设置两行。单击保存打开 suitelet。

问题是如果程序集构建中有更多项目,suitelet 将无法打开并抛出错误 USAGE_LIMIT_EXCEEDED。

我试图减少脚本代码,但没有帮助

var b=0;var nItemLinesCount = objRecord.getLineCount({ sublistId: 'component' }); for(var i=0; i<nItemLinesCount; i++)                                          
{

  if(Qty > 0)
  {
    for(j=0; j<Qty; j++)
    {
      sublist.setSublistValue({
      id : 'custpage_item',
      line : b,
      value : nItem
     });
       sublist.setSublistValue({
      id : 'custpage_qty',
      line : b,
      value : '1'
      }); b++;
    }
  }                                                                         
}

每个 SuiteScript 都有一个 "usage limit"(有时称为治理单元)。

解决此问题的方法是使用 nlapiGetContext().getRemainingUsage() 检查剩余使用量,如果该数量低于您期望在脚本的下一个循环中使用的数量,请将脚本重新安排到运行 稍后再来。

您需要确定性地设计脚本。您需要能够多次 运行 脚本,而不会创建任何类型的重复数据或结果。如果您以这种方式设计脚本,那么在使用率较低时将 SuiteScript 重新安排为 运行 不会产生任何意外的副作用。

这是一个例子:

https://gist.github.com/iloveitaly/eb3fffa67c5ea08010d3de6e552f84d3

具体来说,检查 isScriptUsageRemainingrescheduleScript 函数。