02.11.2021, 12:47 | #25 |
Участник
|
А вы не могли бы попробовать провести эксперимент.
ttsBegin / ttsCommit методы есть на самом табличном буфере(в частности при работе с времянками in memory лучше использовать их) попробуйте в методе Write задействовать не обычный ttsbegin / commit а одноименные методы на буфере датасорса. Есть подозрение что для работы датасорса формы ядро у вас использовало отдельное соединение к базе и при выбросе исключения откатило именно транзакцию открытую в этом соединении. А основную транзакцию в дефолтном соединении, которую вы открыли написав ttsBegin - не откатило. Вот хотелось бы чтобы там был try catch и в catch проверить открыта ли транзакция на соединении связанном с буфером датасорса (я правда на все 100 не уверен что это отдельное соединение - вот и проверим). Как проверить уровень транзакции - Напрямую на табличном буфере методов нет. Но можно попробовать вызвать tableBuffer.ttsCommit() в цикле со счетчиком. Если уровень транзакции 0 то вызов должен по идее выругаться. |
|
Теги |
стек вызовов, транзакции |
|
|