Этот табличный метод
X++:
static void updateParent(InventoryGuidInvoice inventoryGuidInvoice)
{
InventoryGuid current, parent;
InventoryGuidInvoice parentDistr;
InvGuid InvGuid;
;
InvGuid = inventoryGuidInvoice.InvGUID;
ttsbegin;
WHILE(TRUE)
{
SELECT FIRSTONLY current WHERE current.InvGuid == InvGUID;
InvGUID = current.ParentInvGUID;
SELECT FIRSTONLY parent WHERE current.ParentInvGUID == parent.InvGUID;
if(parent)
{
//parentDistr.disableCache();
SELECT FIRSTONLY
FORUPDATE parentDistr
WHERE parentDistr.InvGUID == InvGUID &&
parentDistr.TransRecId == inventoryGuidInvoice.TransRecId
//...........
&& parentDistr.JuridicalPersonId == inventoryGuidInvoice.JuridicalPersonId;
if(parentDistr)
{
parentDistr.AMOUNTCUR += inventoryGuidInvoice.AmountCur;//слияние к предку
//.......
parentDistr.Update();
}
else
{
parentDistr.data(InventoryGuidInvoice);
parentDistr.InvGUID = parent.InvGUID;
parentDistr.insert();
}
}
else
{
break;
}
current.clear();
}
ttscommit;
}