2017-01-03 73 views
1

我需要爲每個倉庫的批量物料更新價格。激活按鈕價格是InventItemPrice形式(路徑:PIM>發佈產品>管理成本>項目價格)激活批量項目的價格。 Dynamics AX 2012 R2

我有我在哪裏使用Activate Price按鈕相同的代碼來更新散裝產品的每個倉庫價格的過程。

所以激活按鈕會在一個時間一個一個(每個產品,每個倉庫),並激活。

如果我這樣做的方式,它正在採取大量的時間來更新產品的批量量的價格。

是否有其他替代這個激活的價格爲散裝產品?

我在此過程中觀察到的一兩件事,如果有在InventTrans多個記錄爲在該激活的過程中Item然後,InventStdCostAdjust::adjustCostFinancialTrans方法具有其循環多次的記錄中inventTrans其使之成爲一個查詢進程掛斷/製作緩慢,因爲有些項目在每個項目的table中有1000條記錄。

所以斷定這一點,我需要一些幫助或者需要有關最佳方法的一些提示激活價格的散裝產品(約70000)(5warehouses)。

+0

'激活Price'是'MenuItemButton',調用'InventItemPriceActivationJob',你的代碼中使用這個類?你能分享你的代碼嗎? –

+0

是的。我的代碼循環遍歷每個倉庫,並將InventItemPriceSim傳遞給InventItemPriceActivationJob類中的activateOneInventItemPriceSim方法。就像標準一樣,我只是在調用這個類。但是我擁有這6個網站/倉庫的70000多條記錄。所以每當一件物品來到它需要第一個倉庫,並傳遞給我說的上述方法。同樣,它爲所有項目做......如果我調試到中間的那個方法去它InventStdCostAdjust :: adjustCostFinancial哪裏查詢和循環花費很多時間。 – Raj

+0

而從inventsite表選擇網站ID { inventItemPriceSim = msftxxxxxRevaluate.createSimulatedItemPrice(inventDim); 如果(inventItemPriceSim.RecId!= 0){ inventItemPriceActivationJob = InventItemPriceActivationJob ::構建體(); 如果(inventItemPriceActivationJob!= NULL){ inventItemPriceActivationJob.activateOneInventItemPriceSim(inventItemPriceSim); } } } – Raj

回答

0

由於SShaheen建議,我寫了一個批處理作業與接受倉庫作爲參數的查詢。我試圖在同一時間運行6個批處理作業,但它會引發錯誤,說明項目出現死鎖。發生這種情況是因爲所有人都在爲6個倉庫選擇相同的物品,所以發生這種情況。

我試圖用一潔具房子運行批處理作業,然後等待幾分鐘,開始第二個和同樣3,4,5,6。這工作。這幫助我將時間減少了6.(總時間)/ 6。由於我有大約80000條記錄,我仍在努力減少這一次。如果我找到更好的解決方案,我會繼續發佈。