|
![]() |
#1 |
Moderator
|
Я-то перенесу, но вот такое "простое" решение что-то у меня вызывает сомнения...
В производственном модуле не специалист, поэтому правильность прокомментировать не могу. Хотя охотно Вам верю, что ускорения вы добились ![]()
__________________
Андрей. |
|
![]() |
#2 |
Участник
|
Цитата:
![]() ![]() |
|
![]() |
#3 |
Участник
|
Цитата:
Думаю, что надо дальше искать и анализировать тяжелые запросы. Внутри есть ProdCalcTrans::updateRealCalcCostBreakdown(prodCalcTrans, _prodBOM, inventItemPrice); там достаточно тяжелые запросы, которые зависят от количества строк... думаю, что надо рыть дальше в чисто административном плане. Отключать функционал не есть гуд. Тем более комментированием. |
|
![]() |
#4 |
Модератор
|
Уверен?
\Data Dictionary\Tables\ProdBOM\Methods\calcCostAmount X++: container calcRealCostAmount() { InventTrans inventTrans; InventDimParm inventDimParmFinancial; InventDimParm inventDimParmActive; InventDimGroupId dimGroupId; InventQty qty = 0; CostAmount value = 0; boolean first = true; ; while select inventTrans // !!! index hint TransIdIdx where inventTrans.InventTransId == this.InventTransId && inventTrans.ItemId == this.ItemId && inventTrans.StatusIssue == StatusIssue::Deducted && inventTrans.ValueOpen == InventTransOpen::Yes && inventTrans.PackingSlipReturned == NoYes::No { if (first) { dimGroupId = InventTable::find(inventTrans.ItemId).DimGroupId; inventDimParmFinancial.initFinancialInvent(dimGroupId); inventDimParmActive.initDimActive(dimGroupId); first = false; } qty += inventTrans.Qty; value += inventTrans.estimatedCostValue(inventDimParmFinancial,inventDimParmActive); /// !!! } qty = abs(qty); value = abs(value); return [qty,value]; }
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#5 |
Участник
|
Уверен, что не комментировать вызов целого метода, а работать с конкретными запросами. Например, с тем, что ты привел.
самое тяжелое в указанном тобой методе - получить сумму ожидаемых себестоимостей. для каждого вызова в свою очередь вызывается X++: [qty,value] = InventTrans::calcMarkedCostValue(this.InventRefTransId,this.ItemId,this.InventDimId,this.inventTable().inventModelGroup().InclPhysicalValueInCost,this.InventTransId); В результате имеем кучу вложенных достаточно тяжелых запросов. Вот с этим и надо разбираться, а не "Просто закомментировав вызов данного расчета" |
|
|
За это сообщение автора поблагодарили: evv (1). |
![]() |
#6 |
Участник
|
Цитата:
Сообщение от mazzy
![]() Уверен, что не комментировать вызов целого метода, а работать с конкретными запросами. Например, с тем, что ты привел.
самое тяжелое в указанном тобой методе - получить сумму ожидаемых себестоимостей. для каждого вызова в свою очередь вызывается X++: [qty,value] = InventTrans::calcMarkedCostValue(this.InventRefTransId,this.ItemId,this.InventDimId,this.inventTable().inventModelGroup().InclPhysicalValueInCost,this.InventTransId); В результате имеем кучу вложенных достаточно тяжелых запросов. Вот с этим и надо разбираться, а не "Просто закомментировав вызов данного расчета" |
|