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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.10.2012, 13:08   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
? Невозможно отредактировать запись
Цитата:
Невозможно отредактировать запись в Платежи по данным клиент-банка (BankClientPayment_RU).
Возник конфликт обновления из-за того, что другой пользовательский процесс выполняет удаление записи или изменение одного или нескольких полей в записи.
Намекните, как отловить UserId того кто держит запись?
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 11.10.2012, 13:28   #2  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Вполне возможно что вы ее и держите. Был такой прикол что в выбранной записи менялся RecVersion, и тогда при вызове update возникала такая ошибка. Посмотрите дебагером.
Старый 11.10.2012, 13:55   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Нужно использовать "оптимистическую транзакцию" (см. код), а также проверить, что в транзакции на добавление/изменение записи действительно нет ничего лишнего
X++:
public void run()
{
    #OCCRetryCount
    ;

    try
    {
        ttsbegin;

	...

        ttscommit;

    }

    catch (Exception::Deadlock)
    {
        retry;
    }

    catch (Exception::UpdateConflict)
    {
        if (appl.ttsLevel() == 0)
        {
            if (xSession::currentRetryCount() >= #RetryNum)
            {
                throw Exception::UpdateConflictNotRecovered;
            }
            else
            {
                retry;
            }
        }
        else
        {
            throw Exception::UpdateConflict;
        }
    }
}
__________________
// no comments
За это сообщение автора поблагодарили: Poleax (1), Deepoint (1).
Старый 11.10.2012, 15:14   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Poleax Посмотреть сообщение
Намекните, как отловить UserId того кто держит запись?
Не факт, что этот кто-то ее еще "держит".
Вообще, перечитать запись из б/д и посмотреть ModifiedUserId, если он включен
__________________
Axapta v.3.0 sp5 kr2
Старый 07.05.2013, 14:30   #5  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Подниму тему: возникает такая же ошибка при попытке обновить записи в таблице.Запрос на обновление:

X++:
 ttsbegin;

        while select forupdate localItems
            where localItems.Mark
        join sum(PlanQty), sum(PlanAddQty), sum(TechPlanQty), sum(TechPlanAddQty), Itemid, Routeid, Recid
            from prodPlanByProdNum
           group by Itemid,Routeid, PlanQty, PlanAddQty, TechPlanQty, TechPlanAddQty,Recid
           where prodPlanByProdNum.ProdNum == localItems.ProdNum
         //  &&  prodPlanByProdNum.IsClosed == NoYes::Yes
          join forupdate Recid,Itemid,RouteId,PlanQty,PlanAddQty,TechPlanQty,TechPlanAddCurQty from prodPlanByWrkCtrGroup
           group by Recid,Itemid,RouteId,PlanQty,PlanAddQty,TechPlanQty,TechPlanAddCurQty
            where prodPlanByWrkCtrGroup.ItemId == prodPlanByProdNum.ItemId
            && prodPlanByWrkCtrGroup.RouteId == prodPlanByProdNum.RouteId
           {
             planqty = prodPlanByWrkCtrGroup.PlanQty - prodPlanByProdNum.PlanQty;
             planaddqty = prodPlanByWrkCtrGroup.PlanAddQty - prodPlanByProdNum.PlanAddQty;
             techplanqty = prodPlanByWrkCtrGroup.TechPlanQty - prodPlanByProdNum.TechPlanQty;
             techplanaddcurqty = prodPlanByWrkCtrGroup.TechPlanAddCurQty - prodPlanByProdNum.TechPlanAddQty;


            prodPlanByWrkCtrGroup.PlanQty = planqty;
            prodPlanByWrkCtrGroup.PlanAddQty = planaddqty;
            prodPlanByWrkCtrGroup.TechPlanQty = techplanqty;
            prodPlanByWrkCtrGroup.TechPlanAddCurQty = techplanaddcurqty;
            prodPlanByWrkCtrGroup.update();

            }
        ttscommit;
    }
Значения присваиваются верно, но на update стопорится. localItems - временная таблица.


Выпадает
X++:
        (ProdPlanByWrkCtrGroup).
   - ,               .
Никто не работает больше с этой таблицей, кроме меня, то есть сам себя блокирую, но вот где- не могу понять. В методе update таблицы ничего нет, он даже не перекрыт, пробовал делать системный (doupdate) - не помогает.
В какую сторону копать, подскажите, пожалуйста?
Старый 07.05.2013, 14:44   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
1. почитайте про оформление кода в Аксапте. Ваш код ужасен.
2. prodPlanByWrkCtrGroup вы выбираете с группировкой, так низя выбирать для апдейта
Старый 07.05.2013, 15:04   #7  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Sada Посмотреть сообщение
1. почитайте про оформление кода в Аксапте. Ваш код ужасен.
2. prodPlanByWrkCtrGroup вы выбираете с группировкой, так низя выбирать для апдейта
Код написан на коленке, если честно, поэтому оформление может хромать, да
Если выбирать без группировки - не выбирается ничего
Старый 07.05.2013, 15:09   #8  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
в отдельном цикле выбирайте. представьте, что аксапта выбрала несколько записей и сгруппировала их, ей чего апдейтить то? какую?
Старый 07.05.2013, 15:11   #9  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Sada Посмотреть сообщение
в отдельном цикле выбирайте. представьте, что аксапта выбрала несколько записей и сгруппировала их, ей чего апдейтить то? какую?
Имеете ввиду, цикл в цикле ? Или отдельным в этой же транзакции ?
Старый 07.05.2013, 15:13   #10  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Sada Посмотреть сообщение
в отдельном цикле выбирайте. представьте, что аксапта выбрала несколько записей и сгруппировала их, ей чего апдейтить то? какую?
Хм, действительно, непонятно
Старый 07.05.2013, 15:50   #11  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
цикл в цикле наверно. вариантов не много)))
Старый 07.05.2013, 15:57   #12  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Sada Посмотреть сообщение
цикл в цикле наверно. вариантов не много)))
Уже сделал, благодарю за помощь) после выходных мозг ещё не включился
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Невозможно создать запись Poleax DAX: Программирование 6 10.08.2010 16:27
Невозможно отредактировать запись в Табель учета рабочего времени(итоги) (RPayTblTrans) NNB DAX: Программирование 5 05.02.2009 09:51
невозможно отредактировать запись finkor DAX: Функционал 5 24.09.2007 13:18
Невозможно выбрать запись в 'LedgerBalancesDim' ('LedgerBalancesDim') Beast-L DAX: Программирование 19 06.08.2007 13:05
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:37.