Показать сообщение отдельно
Старый 13.10.2009, 11:18   #5  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
?
Цитата:
Сообщение от ZVV Посмотреть сообщение
Но для временных таблиц можно (и часто нужно) сделать свою транзакцию посредством вызовов соответсвующих методов на табличном буффере.
X++:
static void TmpTableTTSTest(Args _args)
{

    TmpABC  tmpABC;
    ;

    try
    {
        tmpABC.ttsbegin();
        tmpABC.ItemId = "Test1";
        tmpABC.RefRecId = 1;
        tmpABC.insert();

        tmpABC.ItemId = "Test2";
        tmpABC.RefRecId = 2;
        tmpABC.insert();

        while select forupdate tmpABC
        {
            tmpABC.ItemId = tmpABC.ItemId + "upd";
            tmpABC.update();
        }

        throw error("Throw");

        tmpABC.ttscommit();
    }
    catch
    {
        while select tmpABC
        {
            info(tmpABC.ItemId);
        }
    }
}
Результат:

Throw
Test1upd
Test2upd

Я как-то не так юзаю соответствующие методы табличного буфера?

upd: Ну да, с ручным абортом работает, но только это не совсем то.

Последний раз редактировалось Lemming; 13.10.2009 в 11:25. Причина: upd