2016-12-19 7 views
0

netsuiteのトランザクションレコード(2000レコードまで)をスクリプトで更新する必要があります。 Netsuiteでは、トランザクションレコード(注文/返品)明細の項目を更新する必要があります。大規模なアップデートがスクリプトを介して更新すると考えていたため。netsuite思考スクリプトのレコードのサブリストにあるファイルを編集および更新する方法は?

scirptを作成してレプレットとしてデプロイし、すべてのレコードを処理して更新することは可能ですか?

答えて

3

ガバナンスポイントがなくなるか、要求がタイムアウトするため、RESTletとして実行できませんでした。

Map/Reduceスクリプト/スケジュール済みスクリプト/一括更新スクリプトを使用してこれを行うことをお勧めします。

2

あなたが言ったように、それは大規模なアップデートです。一番良い解決策は、たとえば一日一回実行するようにスケジュール設定できる一括更新スクリプトを作成することです。

0

マップ/リダクションは理想的ですが、スケジュールされたスクリプトはおそらく十分であり、簡単になるでしょう。あなたは、再スケジュールする必要があり、それ

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 
私はそれが残りの部分を実行している正常に実行された後、後にテスト記録にコードスニペットを試してお勧めします

スケジュールされたスクリプトで

+0

object.nlapiCommitLineItem()は動作しますか? –

+0

正しいnlobjメソッドを使用するように変更しました。ありがとう –

関連する問題