USERINFO трогать тоже не нужно.
До кучи. Нашёл у себя джобик для восстановления InventSum
X++:
// Пересчет таблицы "В наличии" (InventSum) для заданной номенклатуры
static void jobInventSumRebuildFromItemId(Args _args)
{
ItemId _ItemId = 'Код номенклатуры';
InventSum InventSum;
InventTrans InventTrans_GrBy_InventDimId;
InventTrans InventTrans;
;
ttsbegin;
delete_from InventSum
where
InventSum.ItemId == _ItemId;
while select InventTrans_GrBy_InventDimId
group by InventDimId
where
InventTrans_GrBy_InventDimId.ItemId == _ItemId
{
InventSum.clear();
InventSum.ItemId = _ItemId;
InventSum.InventDimId = InventTrans_GrBy_InventDimId.InventDimId;
while select InventTrans
where
InventTrans.ItemId == _ItemId &&
InventTrans.inventDimId == InventTrans_GrBy_InventDimId.InventDimId
{
InventSum.addInventTransOnSum(InventTrans);
}
InventSum.insert();
}
ttscommit;
}
Вам в принципе весь он не нужен, только идея. А конкретнее присмотритесь к методам
InventSum.updateInventTrans() или даже
InventSum.subInventTransOnSum()
P.S.: когда уже написал, решил перепроверить. Всё это можно не делать если воспользоваться параметром dropInventOnHand метода InventTrans.delete(), который по умолчанию почему-то выключен.