如何在netsuite脚本中编辑和更新记录子列表中的文件?

如何在netsuite脚本中编辑和更新记录子列表中的文件?,netsuite,sublist,Netsuite,Sublist,必须通过脚本更新netsuite中的事务记录(最多2000条记录)。在Netsuite中,需要更新事务记录(订单/退货)行项目中的字段。因为它的大规模更新需要通过脚本进行更新 是否可以创建一个scirpt并作为restlet部署,处理所有记录并更新它?您不能作为restlet执行此操作,因为您将耗尽治理点或您的请求将超时 我建议通过Map/Reduce脚本/scheduled脚本/Mass-update脚本来实现这一点。您不能将其作为RESTlet来实现,因为您将耗尽治理点,或者您的请求将超时

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


是否可以创建一个scirpt并作为restlet部署,处理所有记录并更新它?

您不能作为restlet执行此操作,因为您将耗尽治理点或您的请求将超时


我建议通过Map/Reduce脚本/scheduled脚本/Mass-update脚本来实现这一点。

您不能将其作为RESTlet来实现,因为您将耗尽治理点,或者您的请求将超时


我建议通过Map/Reduce脚本/scheduled脚本/Mass update脚本来实现这一点。

正如您所说,这是一个大规模更新,因此最好的解决方案是创建一个可以计划每天运行一次的大规模更新脚本。

如您所说,这是一个大规模更新,因此,最好的解决方案是创建一个批量更新脚本,例如,您可以计划每天运行一次。

一个map/reduce将是理想的,但是一个计划好的脚本可能足够好,而且会更容易。你可能得重新安排

if (nlapiGetContext().getRemainingUsage() < SizeNeededToProcessTransaction) {
    nlapiYieldScript();
} 
// process transaction
if(nlapiGetContext().getremaininguage()
您将处理子列表,因此无法通过脚本进行直接更新,您必须加载记录、更新行、提交行,然后保存记录。下面我有一个简单的例子来告诉你如何做到这一点。在本例中,我假设您正在更新item子列表中自定义字段上的每一行

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
var r=nlapiLoadRecord('transaction',internalid);//加载事务
var count=nlapiGetLineItemCount('item');//获取子列表中的行数

对于(var i=1;i一个map/reduce是理想的,但是一个调度脚本可能已经足够好了,并且会更容易。您可能需要重新调度它

if (nlapiGetContext().getRemainingUsage() < SizeNeededToProcessTransaction) {
    nlapiYieldScript();
} 
// process transaction
if(nlapiGetContext().getremaininguage()
您将处理子列表,因此无法通过脚本进行直接更新,您必须加载记录、更新行、提交行,然后保存记录。下面有一个简单的示例,让您了解如何执行此操作。在本示例中,我假设您正在更新项子列表上自定义字段的每一行

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
var r=nlapiLoadRecord('transaction',internalid);//加载事务
var count=nlapiGetLineItemCount('item');//获取子列表中的行数

对于(var i=1;i它没有,我已将其更改为使用正确的nlobj方法,感谢在提供的代码示例中,1.0和2.0脚本混合使用。在单个脚本中,我不相信您可以同时使用这两种方法,因此这不会如图所示工作。没有,我已将其更改为使用正确的nlobj方法,感谢代码示例提供的d、 有1.0和2.0脚本的混合。在单个脚本中,我不相信您可以同时执行这两种操作,因此这不会如图所示工作。