NetSuite 订单项删除循环内问题

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

我的 Restlet 似乎在删除循环内的行项目时出现问题。如果似乎有一条记录总是被跳过。因此,如果三个订单项的 ID 为 111,则只会删除两个。此代码可能存在什么问题:

var itemcount = update_record.getLineItemCount('item');

for (var j = 1; j <= itemcount; j++)
{
    var lineid = update_record.getLineItemValue('item', 'custcol_line_id', j);

    if (lineid == 111)
    {
        update_record.removeLineItem('item', j);
    }
}

javascript netsuite
3个回答
7
投票

这种事情总是会失败。向后运行循环:

for(var j = itemCount; i> 0; i--){

否则,如果您删除第 1 行,然后将索引前进,您要检查的下一行(使用索引 2)最初是第 3 行,并且您完全跳过了第 2 行。


3
投票

使用原始代码,每次删除行时,我们都会弄乱行级别的索引。因此,我们必须从最后一个索引(总行数)开始,转到第一个索引,即 1。请参阅下面的示例代码:

var itemcount = update_record.getLineItemCount('item');

for (var j = itemcount; j >0; j--)
{
    var lineid = update_record.getLineItemValue('item', 'custcol_line_id', j);

    if (lineid == 111)
    {
        update_record.removeLineItem('item', j);
    }
}

0
投票

这里的答案应该使用

for (let i = lineCount - 1; i >= 0; i--)
而不是
for (let i = lineCount; i > 0; i--)

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