如何使我的for循环在NetSuite的用户事件脚本中包含最后一行?

问题描述 投票:0回答:1

我在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
                                            });


          };


};

我如何确保循环实际上经过了最后一行?日志表明脚本停止了比其应在的位置短一行,即检查了插入的最后一行的条件,使其正确地失败了,然后脚本退出了循环;它甚至没有在最后一行上运行。

感谢您的输入!

javascript for-loop netsuite suitescript suitescript2.0
1个回答
0
投票

如果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.

© www.soinside.com 2019 - 2024. All rights reserved.