во-первых, спасибо за ответы!
Цитата:
Alexanderrrr, Вы не там ищете. Блокировки в InventSum.find() - это следствие, а причина где-то в дебрях "расчета аванса", который зачем-то выполняет блокировку запасов в наличии, его и копайте
подозрения у меня на вот этот метод:
X++:
/*
Select table InventSum for update
*/
public InventSum inventSumSelectLocked(InventTrans inventTrans)
{
InventSum inventSum;
;
if (!this.mustUseTTSSystem())
inventSum = InventSum::find(inventTrans.itemId,inventTrans.inventDimId,true);
else
{
if (!this.dBConnectionUpd() || !TTSLevel_Upd || !appl.ttsLevel())
throw error(strfmt("@SYS69842",funcname()));
inventSum.setConnection(this.dBConnectionUpd());
select firstonly forupdate inventSum
index hint itemDimIdx
where inventSum.ItemId == inventTrans.itemId &&
inventSum.InventDimId == inventTrans.inventDimId;
}
return inventSum;
}
он вызывается из inventtrans.update:
X++:
void update(NoYes dropInventOnHand= NoYes::No)
{
InventTrans this_Orig;
InventSum inventSum;
ttsbegin;
this.setStatusDate();
this.setClosedOpen();
//Dual Warehouse -->
this.setClosedOpenSecCur_RU();
//Dual Warehouse <--
this.setDirection();
if (!dropInventOnHand)
{
this_Orig = this.orig();
appl.inventUpdateTTSControl().setTTSBeginUpd();
if (InventSum::mustInventTransBeUpdated(this,this_Orig))
{
inventSum = appl.inventUpdateTTSControl().inventSumSelectLocked(this);
if (!inventSum.canInventTransBeUpdated(this_Orig))
{
inventSum.updateInventTrans(this,NoYes::Yes,null,false);
inventSum = appl.inventUpdateTTSControl().inventSumSelectLocked(this_Orig);
inventSum.updateInventTrans(this_Orig,NoYes::No,null,true);
}
else
inventSum.updateInventTrans(this,NoYes::Yes,this_Orig);
}
else if (InventSum::mustInventTransBeLogUpdated(this,this_Orig))
{
appl.inventUpdateTTSControl().insertInventSumLogTTS(this,NoYes::Yes,inventSum);
appl.inventUpdateTTSControl().insertInventSumLogTTS(this_Orig,NoYes::No,inventSum,true);
}
this.updateTransIdReturn();
appl.inventUpdateTTSControl().setTTSCommitUpd();
}
super();
ttscommit;
}
только в чем дело, понять пока не могу..