Netsuite: Suitescript 2.0: запись в динамическом режиме getSublistValue / getCurrentSublistValue не работает - PullRequest
1 голос
/ 31 октября 2019

Обзор:

Я работаю над Netsuite 2019.2.

Используя Suitescript 2.0, меня просят создать запись VendorPayment.

Я использовал модуль 'N / record', чтобы создать vendorPayment в качестве динамического режима.

Однако на основе документации Suitescript.

Динамический режим: когда сценарий SuiteScript 2.0 создает, копирует, загружает или преобразует запись в динамическом режиме, поля тела записи и отдельные позиции подсписка получают, рассчитывают и проверяют в реальном времени. ,Запись в динамическом режиме имитирует поведение записи в пользовательском интерфейсе ».

Когда я создаю платеж поставщика в пользовательском интерфейсе. Я получаю 5 транзакций указанного поставщика в списке «применить».

Однако, когда я создаю платеж поставщика в Suitescript, используя следующий код:

 var billPayment = record.create({
                type: record.Type.VENDOR_PAYMENT, isDynamic: true, defaultValues: { entity: vendorPaymentModel.entity }
            });

и получаю доступ к подсчету строки «применить» в подсписке, я получаю 5 транзакций, как и ожидалось:

var numberOfTransactions = billPayment.getLineCount({ sublistId:'apply' });

Проблема:

Когда я пытаюсь получить доступ к строкам транзакции подсписка, используя один из следующих двух подходов, я получаю пустые значения.

    for (var i = 0; i < numberOfTransactions; i++) {
                    var apply = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'apply', line: i });
                    var internal = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'internalid', line: i });
                    var transactionType = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'trantype', line: i });
                    var amountDue = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'refnum', line: i });
                    var paymentAmount = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'amount', line: i });
                    var transactionDate = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'applydate', line: i });
}

Все значения пусты, кроме последней строки.

Я попытался перейти на второй подход, где:

  1. Record.selectLine (параметры)

  2. Record.getCurrentSublistValue (параметры)

  3. Record.commitLine (параметры)

Но это тоже не работает.

Пожалуйста, любая помощь, будет принята с благодарностью. Если вам нужны какие-либо другие разъяснения или скриншоты, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 09 ноября 2019

Вы пытаетесь получить несколько значений подсписка? То, как я читаю ваш цикл for, предполагает, что вы ожидаете несколько значений для apply, internal и т. Д. Но вы сказали, что вы получаете только 1 значение вместо 5. Я думаю, это потому, что когда, например, i = 1, старое значение (строка 0) для применения перезаписывается новым значением для применения (строка 1). Возможно, попробуйте использовать массив для хранения всех значений для каждого (применить, внутренний и т. Д.).

Попробуйте:

//empty arrays to hold values
var applys = newArray();
var internals = newArray();
var transactionTypes = newArray();
var amountDues = newArray();
var paymentAmounts = newArray();
var transactionDate = new array();


for (var i = 0; i < numberOfTransactions; i++) {

//for each line get the value
var apply = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'apply', line: i });
var internal = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'internalid', line: i });
var transactionType = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'trantype', line: i });
var amountDue = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'refnum', line: i });
var paymentAmount = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'amount', line: i });
var transactionDate = billPayment.getSublistValue({ sublistId: 'apply', fieldId: 'applydate', line: i });

//now save the current values in the array before getting the next set of values
applys.push(apply);
internals.push(internal);
transactionTypes.push(transactionType);
amountDues.push(amountDue);
paymentAmounts.push(paymentAmount);
transactionDate.push(transactionDate);

}

Позже в вашем коде, если вы вспомните "применить" сейчасвместо этого вам придется выполнить цикл for и вспомнить «applys [x]»

Я новичок в этом сайте и новичок в работе со скриптами в NetSuite, но я надеюсь, что это поможет вам.

...