AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2010, 16:01   #7  
Alexanderrrr is offline
Alexanderrrr
Участник
Аватар для Alexanderrrr
 
54 / 19 (1) ++
Регистрация: 06.03.2009
Адрес: Саратов
во-первых, спасибо за ответы!

Цитата:
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;
}
только в чем дело, понять пока не могу..
__________________
..в каждой программе есть хотя бы одна ошибка..

Последний раз редактировалось Alexanderrrr; 09.01.2010 в 16:12.
Теги
блокировки

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
lookup для ItemId iz InventTable + InventDim + InventSum stalker25 DAX: Программирование 6 20.07.2009 15:50
RecordSet у inventSum CasperSKY DAX: Программирование 3 21.03.2008 15:52
Ошибка при разноске складских движений Starling DAX: Администрирование 9 12.10.2007 14:21
Проверка уникальности ItemDimIdx в InventSum DreamCreator DAX: Программирование 15 06.12.2005 17:23
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:29.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.