我在NetSuite中有一个用户事件脚本,该脚本在所有销售订单行项目之间循环,并根据一些条件自动添加定金。它适用于除最后一行以外的所有行。
几乎工作代码:
for(var i=0;i<=lineCount;i++){
var sub_field2 = load_so.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});
log.debug({
title:"Item ID",
details: sub_field2
});
var sub_field1 = load_so.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_vcc_deposit_item',
line: i
});
log.debug({
title:"Deposit Item?",
details: sub_field1
});
var isclosed = load_so.getSublistValue({
sublistId: 'item',
fieldId: 'isclosed',
line: i
});
if(sub_field1 == true && isclosed !== true){
var linkeddepitem = load_so.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_vcc_ldi',
line: i
});
log.debug({
title:"Linked Item ID",
details: linkeddepitem
});
var depqty = load_so.getSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: i
});
log.debug({
title:"Qty",
details: depqty
});
load_so.insertLine({
sublistId: 'item',
line: i+1
});
load_so.setSublistValue({
sublistId: 'item',
fieldId:'item',
line: i+1,
value: linkeddepitem
});
load_so.setSublistValue({
sublistId: 'item',
fieldId:'quantity',
line: i+1,
value: depqty
});
var lineCountduringloop = load_so.getLineCount({ sublistId: 'item' });
log.debug({
title:"Line Count Before Return",
details: lineCountduringloop
});
};
};
我如何确保循环实际上经过了最后一行?日志表明脚本停止了比其应在的位置短一行,即检查了插入的最后一行的条件,使其正确地失败了,然后脚本退出了循环;它甚至没有在最后一行上运行。
感谢您的输入!
如果lineCount
是总行数,则最后一行(在SS 2.0中)的索引将是lineCount - 1
。因此,您的for
语句的第一行应为:
for(var i=0;i<lineCount;i++){
NOT
for(var i=0;i<=lineCount;i++){
(请注意已删除的“ =”)
似乎正在发生的情况是该脚本正在不存在的行上尝试操作;因此错误。这通常称为off by one error.