Показать сообщение отдельно
Старый 23.12.2009, 16:33   #47  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
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(), который по умолчанию почему-то выключен.