Цитата:
Сообщение от
Lemming
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: Ну да, с ручным абортом работает, но только это не совсем то.
Нет, всё работает штатно, а вы ожидали другого результата?
Вы вызвали ошибку, основная транзакция в БД отвалилась, транзакция же на временной таблице висит по прежнему без изменений. Если вам её тоже нужно откатить, нужно вызвать tmpABC.ttsAbort();