我创建了一个suitelet脚本,在该脚本中,将程序集构建中的行项目设置在suitelet中乘以数量。也就是说,如果数量为2,则该套件将在套件中设置两行。点击保存即可打开套件。
问题是,如果装配体中有更多项目,则套件将无法打开,并引发错误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++;
}
}
}
答案 0 :(得分:0)
每个SuiteScript都有一个“使用限制”(有时称为管理单元)。
解决此问题的方法是使用nlapiGetContext().getRemainingUsage()
检查是否有大量使用情况,如果该数目小于您在脚本的下一个循环中预期使用的数目,请重新计划脚本以再次运行以后。
您需要确定性地设计脚本。您需要能够多次运行脚本,而无需创建任何重复的数据或结果。如果以这种方式设计脚本,那么重新安排SuiteScript在使用率较低时运行将不会产生任何意外的副作用。
这是一个例子:
https://gist.github.com/iloveitaly/eb3fffa67c5ea08010d3de6e552f84d3
具体来说,请查看isScriptUsageRemaining
和rescheduleScript
函数。