Nezávislá transakce v AX

Někdy je potřeba zapsat data do databáze nezávisle na aktuálně běžící transakci. Například chceme zalogovat nějaký stav, ke kterému v aplikaci došlo, ale případná výjimka by měla za následek zrušení celé transakce, včetně onoho zápisu do logu. Mohlo by to vypadat následovně:

LogTable logTable;
;
ttsbegin;
logTable.Message = "Něco se stalo";
logTable.insert();
//nějaký následný kód ve stejné transakci vyhazuje výjimku
throw Exception::Error;
ttscommit;

Dá se to vyřešit poměrně jednoduše. Potřebujeme vytvořit samostatné připojení do databáze a případně vlastní transakci. Modifikace předchozího kódu by vypadala takto:

LogTable logTable;
UserConnection connection = new UserConnection();
;
ttsbegin;
//použij jiné připojení
logTable.setConnection(connection);
//začátek nezávislé transakce
logTable.ttsbegin();
logTable.Message = "Něco se stalo";
logTable.insert();
logTable.ttscommit();
//tato výjimka nemá vliv na zápis do logTable
throw Exception::Error;
ttscommit;