Netsuiteトランザクションラインアイテムの保存された検索を取得するSuiteletスクリプトがあります。ユーザーは1つ以上の行の調整済みチェックボックスをオンにしてから送信ボタンをクリックすると、スクリプトは調整済みチェックボックス= trueの各レコードをロードし、レコードの特定のラインアイテムを更新してからレコードを送信します。問題は、各反復= 30ユニットだと思うので、Suitescriptのガバナンス制限である1000に達していることです。スクリプトがレコードをロードし、調整されたチェックボックス= trueであるすべてのラインアイテムを更新してからレコードを送信できるように、これをコーディングする方法はありますか?ほとんどの場合、私は4〜5レコードしか開いていませんが、各レコードの多くの行を更新しています。これが私が現在使用しているコードです。
for(var i=1; i< count+1; i++)
{
//get the value of the reconcile checkbox
var reconcileTransaction = request.getLineItemValue('custpage_transaction_list', 'reconcile', i);
// If it's checked, reconcile the transaction
if(reconcileTransaction == 'T')
{
// Get the transaction internal ID
var internalId = request.getLineItemValue('custpage_transaction_list', 'internalid', i);
// Get the transaction type
var recordType = request.getLineItemValue('custpage_transaction_list', 'recordtype', i);
var recordLine = request.getLineItemValue('custpage_transaction_list', 'linesequencenumber', i);
// var totalAmount = totalAmount + request.getLineItemValue('custpage_transaction_list', 'amount', i);
try
{
var recTransaction = nlapiLoadRecord(recordType, internalId);
recTransaction.setLineItemValue('expense', 'custcol2',recordLine, 'T');
recTransaction.setLineItemValue('expense', 'custcol_date_reconciled',recordLine, date1);
nlapiSubmitRecord(recTransaction);
//recTransaction.setLineItemValue('expense', 'custcol4', recordLine, periodReconcile);
num++;
}
あなたの助けを本当にありがとう-私はこれで非常に新しいです!
このようなあらゆるタイプの一括処理では、ほぼ確実に、スケジュールされたスクリプトに処理をオフロードする必要があります。NS開発に不慣れな場合、これは少し進んでいるかもしれませんが、私は次のようなものを提案するかもしれません
トランザクションの実際のロードと送信を実行するスケジュールスクリプトを作成します。スクリプトパラメータを追加して、データを渡すことができるようにします。
Suiteletで送信ボタンを押すと、更新する必要のあるトランザクションと行を説明するオブジェクトの配列を作成するだけです。
配列が構築されnlapiScheduleScript()
たら、を使用してスケジュールされたスクリプトを呼び出し、データ配列を処理のために渡します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加