Мне кажется, лучше копать в этом направлении:
1. Поставить в настройках АОСа галку "Разрешить точки останова для отладки кода Х++, выполняемого на этом сервере.
2. После этого в классе Application начнут автоматически вызываться методы ttsNotifyBegin при начале транзакции и ttsNotifyCommit при завершении транзакции.
3. Модифицируйте эти методы так, чтобы записывать логи. В лог записывайте стек вызовов и значение уровня вложенности транзакции.
4. Анализируйте лог, проверяя стек вызовов и уровень вложенности транзаций, чтобы понять, где непарные ttsbegin\ttscommit
Я данный код написал на коленке прямо в редакторе сообщений.
X++:
void ttsNotifyBegin()
{
container stackTrace;
int i;
str s="";
UserConnection userConnection;
MyLogTable MyLogTable;
..........................
if (!inLog) //добавленная в класс Application переменная, чтобы не попасть в рекурсию при вызове userConnection.ttsbegin()
{
inLog = true;
stackTrace = xSession::xppCallStack();
for(i = 7; i<=conLen(stackTrace); i+=2)
s+=strFmt("%1:%2\r\n", conPeek(stackTrace, i), conPeek(stackTrace, i+1));
userConnection = new UserConnection();
userConnection.ttsbegin();
MyLogTable.setConnection(userConnection);
MyLogTable.TTSLevel = appl.ttsLevel();
MyLogTable.CallStack = s;
MyLogTable.insert();
userConnection.ttscommit();
inLog = false;
}
}