Показать сообщение отдельно
Старый 11.10.2012, 13:55   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (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).