2015-04-03 29 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的性能。