Wamr прав. Никогда не делай остановок, и тем более - запросов действий пользователя внутри транзакции. Я юзаю рекордлисты, чекаю их, а потом по ним делаю разноску. Открытие формы может почлечь непарнось точек входа в транзакцию и выхода из неё. При throw error() откатываются ВСЕ проводки, сделанные внутри транзакции, так что это тебе не подойдет.
Да, для установки видимости кнопок транзакии не нужны
С Уважением,
Георгий