Есть метод М1, в котором грубо говоря есть две части Ф1 и Ф2.
Ф1 — проверяет данные
Ф2 — сохраняет их
Метод М1 обернут в транзакцию. Выглядит это как-то так:
метод М1()
{
НачалоТранзакции();
Ф1();
Ф2();
КонецТранзакции();
}
Предположим пользователь П1 вызвал метод М1. В проверке Ф1 у него возникло исключение, транзакция откатилась, никакие данные не сохранились, а пользователю пишел вопрос «Хотите продолжить, или отменить». Он жмет допустим продолжить и передает дополнительно к вызову идентификатор исключения, которое свалило выполнение в последний раз. Теперь исключение по этому идентификатору будет пропускаться, и таким образом метод отработает от начала и до конца, отработает Ф1 с проверкой и выполнится Ф2. После этого транзакция успешно завершится.
В такой ситуации если пользователь П2 конкурентно запустит метод М1, то у него не получится завершить транзакцию, т.к. уровень изоляции ему это запретит, ибо данные были изменены в другой транзакции пользователем П1.
Вот если на пальцах то, что предложил автор.
Таким образом получается имитация stateful поведения там, где это сложно достижимо по честному, например в многопользовательской системе (на тысячи пользователей), которая работает с огромным объемом данных, методы блокируют миллионы записей в десятках таблиц.
Как-то так.
А если вы стремитесь к безопасности, то советую посмотреть сюда
http://bood.ru/sistemy-bezopasnosti/ - автосигнализация от Бладхаунд.