NetSuite Обновление записей подписки клиента

Я пытаюсь обновить список подписок клиентов в netsuite.

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

Но выдает ошибку: Уведомление (SuiteScript) Вы попытались выполнить недопустимый подсписок или операцию с позицией. Вы либо пытаетесь получить доступ к полю на несуществующей строке, либо пытаетесь добавить или удалить строки из статического подсписка.

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

Перед использованием setCurrentLineItemValue необходимо выбрать строку с помощью selectLineItem, а затем commitLineItem, чтобы сохранить изменения.

Другие вопросы по тегам