Показать сообщение отдельно
Старый 25.05.2006, 10:15   #5  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от BOAL
метод inventTrans.delete() сам пересчитывает InventSum
Ничего больше не нужно.
Это не так.
Создаю межскладское пермещение, комплектую меньше изначально предложенного, в результате имею три проводки, одна из которых со статусом 'Физ.Зарезервировано', и количеством = разнице между изначально предложенным количеством и реально скомплетованным. Далее смотрю что В наличии -- физ. зарезервировано 1. Далее удаляю проводку со статусом 'Физ.зарезервировано':

PHP код:
ttsbegin;
        while 
select forupdate inventTrans
            index hint TransTypeTransRef_idx
            where   inventTrans
.TransRefId  == '123886_090' &&
                    
inventTrans.StatusIssue == StatusIssue::ReservPhysical
                    
{
                        
itemId inventTrans.ItemId;
                        
inventTrans.delete(NoYes::Yes);
                    }
ttscommit
Проверяю проводки -- две, физ.зарезервировано удалена. Смотрю 'В Наличии' -- как было Физ.Зарезервировано, так там и сидит. Проблема решается пересчетом inventSum:

PHP код:
 inventSumReCalcItem = new InventSumReCalcItem(itemIdfalseCheckFix::Fix);
 
inventSumReCalcItem.updateNow(); 
Но при таком раскладе, кажется мне лишним то что я лезу в проводки - удаляю там запись, потом пересчитываю InventSum, и встает вопрос -- нельзя ли это делать штатными средствами или по их аналогии.