Для начала давайте определимся в целом с тем, какие операции мы можем выполнять. Например, мы можем изменить сумму заказа покупателя – это одна операция. Но мы так же можем не просто изменить сумму заказа, но и изменить и сумму счета, с которым связан заказ.
При этом не должно возникать такой ситуации, что сумма заказа изменилась, а сумма счета нет.
Например, мы изменили сумму в заказе, а потом произошел технический сбой (выключили электричество), т.е. сумма заказа изменилась, а сумму счета мы просто не успели изменить. Такого рода изменения не должны быть записаны в СУБД, потому что для нас оба действия: изменение суммы заказа и изменение суммы счета – это одна неделимая операция.
Такие последовательные действия, которые могут либо быть полностью выполнены, либо полностью не выполнены, называются транзакцией.
Т.е. транзакция – это логическая единица работы с данными, эта единица может быть либо выполнена целиком успешно, либо полностью не выполнена, как будто мы ничего и не делали на любом из этапов действий: в случае принудительной отмены или возникновения сбоев (ошибок) не важно.

Очевидно, что у транзакции есть свое начало и свой окончание. Для того чтобы начать транзакцию, необходимо выполнить команду BEGIN, а чтобы зафиксировать, используется команда COMMIT. Для принудительной отмены, например, мы уже сделали какие-то действия и поняли, что дальше мы продолжать не можем, используется команда ROLLBACK.
Механизм WAL в СУБД
Для выполнения операций над данными используется механизм WAL (Write Ahead Log), который реализует запись всех действий сначала в журнал логов (файл ldf для MS SQL). И только потом СУБД переносит всю информацию в сами таблицы СУБД (файл mdf для MS SQL).
Таким образом, по журналу логов можно получить данные на конкретную временную точку (срез).
Так же журнал логов используется и для бэкапов, чтобы фиксировать изменения относительно полной копии.
Транзакции в 1С: Предприятие
Среда разработки 1С: Предприятие автоматически запускает и фиксирует/отменяет транзакции при любом нашем действии над объектами. Но если мы хотим обернуть в транзакцию действия над несколькими объектами, т.е. сделать действия над несколькими объектами одной логической единицей, то мы используем команды 1С: НачатьТранзакцию(), ЗафиксироватьТранзакцию(), ОтменитьТранзакцию().
Чтобы проверить, активна ли транзакция в данный момент (открыта ли уже транзакция в 1С), то мы можем выполнить команду ТранзакцияАктивна(), которая нам вернет ИСТИНА/ЛОЖЬ .
Транзакция открывается автоматически при записи любого объекта 1С!
Вложенность не поддерживается. Другими словами, если транзакция уже активна, а вы вызовите команду НачатьТранзакцию(), то 1С: Предприятие ее просто проигнорирует. А если вы напишите НачатьТранзакцию() 5 раз, и потом 1 раз ЗафиксироватьТранзакци() или ОтменитьТранзакцию, то она полностью зафиксируется/отменится.
При повторном вызове команды зафиксировать или отменить, будет ошибка: «Транзакция не активна».
Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 3. Занятие 09-01 Знакомство с блокировками СУБД.