Как удалить строки в клиентском скрипте pageInit

#netsuite #suitescript #suitescript2.0

Вопрос:

У меня есть пользовательская запись, которая отображает подсписок, подобный этому подсписку

Я хочу отображать строки только в том случае, если у них осталось более 0 КОЛ-во

например, лот SN01 необходимо удалить.

Я хочу сделать это на странице <url>. когда пользователь откроет запись, он не увидит строк с оставшимся количеством 0

И я получаю ошибку SSS_INVALID_SUBLIST_OPERATION CurrentRecord.selectLine

мой код

 function pageInit(scriptContext) {
            
            var rec = scriptContext.currentRecord;
            var count = rec.getLineCount('recmachcustrecord_slp_package_no');

            for (var i = 0; i < count; i  ) {

                rec.selectLine({
                    sublistId: 'recmachcustrecord_slp_package_no',
                    line: i
                });


                var qtyR = rec.getCurrentSublistValue({
                    sublistId: 'recmachcustrecord_slp_package_no',
                    fieldId: 'custrecord_slp_qty_remaining',
                });

                if (qtyR == 0) {
                    rec.removeLine({
                        sublistId: 'recmachcustrecord_slp_package_no',
                        line: i,
                        ignoreRecalc: true
                    });
                }
            }
        }
 

Ответ №1:

При удалении строк из подсписка с помощью SuiteScript лучше всего продвигаться вверх от нижней части списка.

Например, удаление первой позиции изменяет значение индекса для всех остальных позиций. Затем попытка удалить строку с индексом count приводит к тому SSS_INVALID_SUBLIST_OPERATION , что строка с этим индексом больше не существует.

Чтобы начать с самого низа:

 for (var i = count - 1; i >= 0; i--) {
    // Add your logic here.
}