1

我正在尝试更新 netsuite 中的客户订阅列表。

var itemCount = recLead.getLineItemCount('subscriptions');
for (var i = 1; i < itemCount; i++ ) {  recLead.setCurrentLineItemValue('subscriptions', 'subscribed', 'T');}

但是会抛出错误:注意 (SuiteScript) 您尝试了无效的子列表或行项目操作。您要么尝试访问不存在的行上的字段,要么尝试从静态子列表中添加或删除行。

4

2 回答 2

2

在使用 setCurrentLineItemValue 之前,您需要使用 selectLineItem 选择行,然后 commitLineItem 以保存更改。

于 2016-09-15T11:55:31.190 回答
2

如果您计划使用“当前”行项目功能,那么您确实需要选择要使用的行。如下:

var itemCount=recLead.getLineItemCount('subscriptions');
for(var i=1;i<=itemCount;i++){
  recLead.selectLineItem('item',i);
  recLead.setCurrentLineItemValue('subscriptions','subscribed','T');
  recLead.commitLineItem('item');
}

或者,如果您不想那样做,您可以改用 setLineItemValue。

var itemCount=recLead.getLineItemCount('subscriptions');
  for(var i=1;i<=itemCount;i++){
  recLead.setLineItemValue('subscriptions','subscribed',i,'T');
}

两者都有效地工作相同。

顺便说一句,由于您必须从第 1 行开始,您需要确保使用 i<=itemCount。否则,如果有 10 行,您将错过最后一行。当您移至 2.0 并从 0 开始计数时,您可以使用 i< itemCount。

于 2016-09-15T12:22:11.573 回答