套件上的 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
具体来说,检查 isScriptUsageRemaining
和 rescheduleScript
函数。
我创建了一个 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
具体来说,检查 isScriptUsageRemaining
和 rescheduleScript
函数。