уж если вопрос зашел про вложенные транзакции, то вот примерчик многим знакомый
X++:
static void UpdateCustomers(Args _args)
{
CustTable custTable;
;
ttsbegin; // Уровень транзакции меняется с 0 на 1.
while select forupdate custTable
where custTable.CustGroup == '40' // SEIMPLICIT_TRANSACTIONS ON
{
ttsbegin; // Уровень транзакции меняется с 1 на 2.
custTable.CreditMax = 1000;
custTable.update();
ttscommit; // Уровень транзакции меняется с 2 до 1.
}
ttscommit;// COMMIT TRANSACTION – Уровень транзакции меняется с 1 на 0.
}