2017-01-03 3 views
1

各倉庫の商品の大部分の価格を更新する必要があります。価格の有効化ボタンはInventItemPriceフォーム(パス:PIM>リリース済み製品>管理費>商品価格)にあります。バルク品目の価格を有効にします。 Dynamics AX 2012 R2

私は、各倉庫のバルク製品の価格を更新することActivate Priceボタンの同じコードを使用していますプロセスを持っています。

アクティブボタンは、一度に1つずつ(各倉庫ごとに)移動し、有効になります。

このようにすれば、大量の商品の価格を更新するのに多くの時間がかかります。

バルク製品の価格を有効にするにはこれ以外の方法がありますか?

私は複数のレコードが、この活性化の過程で、その後ItemためInventTransに存在する場合、InventStdCostAdjust::adjustCostFinancialTrans方法がこれを作っているinventTrans内のレコードのように何度もループし、クエリを持って、このプロセスではもう一つのことを観察しましたいくつかのアイテムには1000個のレコードがあるので、処理がハングアップする/遅くなるtable各アイテムに

だからこれを締結するために、私は(5warehouses)(約70000)いくつかの助けを必要とするか、バルク製品の価格を有効にするために最善のアプローチについていくつかのヒントが必要になります。

+0

'Activate Price'は' MenuItemButton'で、 'InventItemPriceActivationJob'を呼び出すと、あなたのコードはこのクラスを使用しますか?あなたのコードを共有できますか? –

+0

はい。私のコードは、各ウェアハウスをループし、InventItemPriceActivationJobクラスのactivateOneInventItemPriceSimメソッドにInventItemPriceSimを渡すだけです。私はちょうど標準のように、そのクラスを呼び出しています。しかし、私はそれらの6つのサイト/倉庫で70000以上のレコードを持っています。だからアイテムが来るときはいつも最初の倉庫があり、上記のメソッドに渡すと言った。同様に、すべての項目に対して行うことです...私はそのメソッドにデバッグする場合、その中でInventStdCostAdjust :: adjustCostFinancialに行きます。ここでは、クエリとループ処理に多くの時間がかかります。 – Raj

+0

一方inventsiteテーブルからの選択のsiteId {inventItemPriceSim = msftxxxxxRevaluate.createSimulatedItemPrice(inventDim)。 IF(inventItemPriceSim.RecId!= 0){ inventItemPriceActivationJob = InventItemPriceActivationJob ::コンストラクト()。 IF(inventItemPriceActivationJob = NULL!) {inventItemPriceActivationJob.activateOneInventItemPriceSim(inventItemPriceSim)。 } } } – Raj

答えて

0

SShaheenが提案したように、私はパラメータとして倉庫を受け入れるクエリを使ってバッチジョブを書いた。私は同時に6つのバッチジョブを実行しようとしましたが、アイテムのデッドロックと言ってエラーを投げます。これは、すべてが6つの倉庫で同じアイテムを選択しているために発生します。

私は、まずウェアハウスでバッチジョブを実行し、分のカップルを待つことを試みた2つ目と同様に3,4,5,6-を開始しました。これは働いた。これにより、6時間を短縮することができました。(合計時間)/ 6。私はまだ約80000のレコードを持っているので、この時間を減らそうとしています。私はより良い解決策を見つけたら投稿を続けます。

関連する問題