2017-01-03 44 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条记录,我仍在努力减少这一次。如果我找到更好的解决方案,我会继续发布。