javascript - 如何让 for 循环包含 NetSuite 中用户事件脚本的最后一行?

标签 javascript for-loop netsuite suitescript suitescript2.0

我在 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++){ 

不是

for(var i=0;i<=lineCount;i++){

(注意删除的“=”)

看起来发生的情况是脚本正在尝试对不存在的行进行操作;因此出现错误。这通常称为 off by one error.

关于javascript - 如何让 for 循环包含 NetSuite 中用户事件脚本的最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60227655/

相关文章:

javascript - 套件脚本 2.0 : Retrieve the values of the parameters passed from the sales order into the suitelet using the getParameter

javascript - js/jq中检测鼠标向上、向左、向右、向下移动

java - 我的单独方法不断返回错误的值

NetSuite SuiteTalk API - 获取库存详细信息

使用 apply 函数替换在 R 中的 dfs 列表上迭代运行向后逐步回归的 for 循环,以减少计算时间

java - 如何将用户输入的字符串转换为 pig 拉丁语?

javascript - 显示/保存与代码中没有位置的行关联的 NS 高级 pdf/html 模板时出错

javascript - 用于移动设备的 HTML5 拖放

javascript - react 悬念/懒惰延迟?

javascript - jQuery 仅在父类名称中前置/附加