如何在netsuite思想脚本中编辑和更新记录子列表中的字段?

时间:2016-12-19 19:09:27

标签: netsuite sublist

必须通过脚本更新netsuite中的事务记录(最多2000条记录)。在Netsuite中,需要更新交易记录(订单/退货)行项目中的字段。因为它的大量更新考虑通过脚本更新。

是否可以创建scirpt并部署为reslet并处理所有记录并更新它?

3 个答案:

答案 0 :(得分:3)

您无法将其作为RESTlet执行,因为您的管理点用完了,或者您的请求会超时。

我建议通过Map / Reduce脚本/预定脚本/批量更新脚本来执行此操作。

答案 1 :(得分:2)

就像你说的那样,这是一次大规模的更新,所以最好的解决方案是创建一个Mass Update脚本,你可以计划每天运行一次。

答案 2 :(得分:0)

map / reduce是理想的,但是预定的脚本可能足够好并且更容易。你可能要重新安排它

if (nlapiGetContext().getRemainingUsage() < SizeNeededToProcessTransaction) {
    nlapiYieldScript();
} 
// process transaction

您正在处理子列表,因此您无法通过脚本直接更新,您必须加载记录,更新行,提交行,然后保存记录。我在下面有一个简单的例子,让您了解如何执行此操作。我假设您正在更新此示例中项目子列表中自定义字段的每一行

var r = nlapiLoadRecord('transaction', internalid); // load transaction

var count = nlapiGetLineItemCount('item'); // get number of lines in sublist
for (var i = 1; i <= count; i++) { // sublists start at 1 so for loop params are different
    r.selectLineItem('item', i); // select the line item
    r.setCurrentLineItemValue('item', 'custcol_updateField', someValue); // assign the value you want 
    r.commitLineItem('item'); // commits the line 
}

nlapiSubmitRecord(r); // saves the transaction changes

我建议在测试记录中尝试使用代码片段,然后在预定脚本中成功运行其余部分