2015-04-03 53 views
2

我有一个Suitelet脚本,在保存的搜索NetSuite的交易行项目的拉动。用户可以在一行或多行上检查已核对的复选框,然后单击提交按钮,脚本将加载每个已协调的记录复选框= true并更新记录上的特定行项目,然后提交记录。问题在于我为一个套书打出治理限制1000,因为我认为每个迭代= 30单位。有没有办法让我编写代码,以便脚本可以加载记录并更新所有对帐复选框= true的行项目,然后提交记录?在大多数情况下,我只打开4 - 5条记录,但更新每条记录上的许多行。这是我目前使用的代码。NetSuite的Suitelet:遍历交易行项加载的列表,并提交记录没有达到治理限制

for(var i=1; i< count+1; i++) 
 
\t { 
 
\t //get the value of the reconcile checkbox 
 
\t var reconcileTransaction = request.getLineItemValue('custpage_transaction_list', 'reconcile', i); 
 
// If it's checked, reconcile the transaction 
 
\t if(reconcileTransaction == 'T') 
 
\t { 
 
\t // Get the transaction internal ID 
 
\t var internalId = request.getLineItemValue('custpage_transaction_list', 'internalid', i); 
 
\t // Get the transaction type 
 
\t var recordType = request.getLineItemValue('custpage_transaction_list', 'recordtype', i); 
 
\t var recordLine = request.getLineItemValue('custpage_transaction_list', 'linesequencenumber', i); 
 
\t // var totalAmount = totalAmount + request.getLineItemValue('custpage_transaction_list', 'amount', i); 
 

 
\t try 
 
\t { 
 
\t var recTransaction = nlapiLoadRecord(recordType, internalId); 
 
\t recTransaction.setLineItemValue('expense', 'custcol2',recordLine, 'T'); 
 
\t recTransaction.setLineItemValue('expense', 'custcol_date_reconciled',recordLine, date1); 
 
\t nlapiSubmitRecord(recTransaction); 
 
\t //recTransaction.setLineItemValue('expense', 'custcol4', recordLine, periodReconcile); 
 
\t num++; 
 
\t }

非常感谢您的帮助 - 我在这个非常新!

+0

你能展示更多代码吗? I.E.你的搜索是什么样的?如果你只加载4-5条记录,并怀疑每次迭代使用30个单位,我不明白你是如何达到1000的限制。 – 2015-04-03 16:25:54

回答

4

对于任何类型的这样的批量处理的,你几乎肯定会需要卸载的处理计划脚本。如果你是新来NS的发展,这可能是有点先进,但我可能会建议像

  1. 创建计划脚本,负责执行实际负载和交易的提交。向它添加一个脚本参数,以便您可以将数据传递给它。

  2. 当被压在Suitelet提交按钮,只需建立一个描述交易和行需要更新的对象数组。

  3. 构建阵列后,使用nlapiScheduleScript()来调用您的计划脚本,传入数据Array进行处理。

+0

将批处理卸载到另一个脚本是一个很好的策略。除了预定脚本之外,我们还将这样的批量数据卸载到restlets。 – 2015-04-07 20:05:30

+0

Restlets确实为您提供了一些增强的治理,它们*应提供比预定脚本更快的响应时间。即使前面的队列中没有任何内容,NetSuite可以花费5分钟时间启动预定的脚本。如果您还可以使Restlet调用异步,那么响应时间会更多。 – erictgrubaugh 2015-04-07 23:33:24

0

您可以尝试在您的suitelet上添加一个隐藏列,其中包含记录的内部ID,并对要由记录ID处理的行进行分组。这样可以避免多次加载和保存记录消耗使用单位的记录,并且还会提高suitelet的性能。