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, чтобы сохранить изменения.