Netsuite:Suitescript 2.0:动态模式记录getSublistValue / getCurrentSublistValue不起作用

问题描述 投票:1回答:1

概述:

我正在研究Netsuite 2019.2。

使用Suitescript 2.0,需要创建VendorPayment记录。

我使用了'N / record'模块将vendorPayment创建为动态模式。

但是,基于Suitescript文档。

动态模式:当SuiteScript 2.0脚本创建,复制,加载或以动态模式转换记录,记录的主体字段和子列表订单项的来源,计算和验证均在即时的。动态模式下的记录模拟记录的行为在用户界面中。”

[当我在UI中创建供应商付款时。我在“应用”列表中获得了指定供应商的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(options]

  2. Record.getCurrentSublistValue(options)

  3. Record.commitLine(options]

但是它也不起作用。

请任何帮助,不胜感激。如果您需要其他说明或屏幕截图,请告诉我。

netsuite suitescript suitescript2.0
1个回答
0
投票

您是否试图获取多个子列表值?我阅读for循环的方式表明,您希望应用,内部等有多个值。但是您说您只会得到1个值,而不是5个。我认为这是因为例如当i = 1时,旧值( apply的新值(第1行)将覆盖apply的第0行)。也许尝试使用数组来存储每个数组的所有值(应用,内部等)。

尝试:

//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);

}

稍后在您的代码中,如果您现在调用“ apply”,则必须进行一个for循环并调用“ applys [x]”

我是此站点的新手,并且是使用NetSuite中的脚本的新手,但希望对您有所帮助/为您工作。

© www.soinside.com 2019 - 2024. All rights reserved.