Столкнулся с такой баго/фичей
X++:
connect = new Connection();
connect.ttsbegin();
Stmt = connect.createStatement();
perm = new SqlStatementExecutePermission(sql);
perm.assert();
res = Stmt.executeUpdate(sql);
connect.ttscommit();
CodeAccessPermission::revertAssert();
// вставка в таблицу
AnyTable.clear();
......
AnyTable.Doinsert();
Внутри блока try команда sql выполняется второй раз.
Если вынести вне блока, то все работает на ура.
У меня воспроизводится на ax 40