Транзакция — это цепочка действий над базой данных, воспринимаемая ею как единое целое. В результате транзакции база данных либо переходит из одного целостного состояния в другое, либо остается в исходном состоянии.
Механизм транзакций используется в тех случаях, когда бизнес-логика предусматривает одновременное изменение нескольких объектов в базе. Если в этом процессе произойдет хотя бы одна ошибка, все другие изменения будут отменены. Т.е. база вернется в состояние, в каком она находилась до начала транзакции. Это критически важно при многопользовательской работе в базе данных, где одну и ту же информацию могут менять несколько пользователей. Транзакция, фактически, блокирует изменяемые данные для других пользователей на все время этого изменения.
Во встроенном языке на платформе 1С:Предприятие 7.7 транзакции могут использоваться двумя способами:
- Неявно — при вызове предопределенных процедур ОбработкаПроведения() и ОбработкаУдаленияПроведения() модуля документа;
- Явно — в других модулях конфигурации с помощью специальных процедур НачатьТранзакцию() и ЗафиксироватьТранзакцию();
Процедуры для работы с транзакциями
Имя процедуры | Описание |
---|---|
НачатьТранзакцию() | используется для явного начала транзакции. Весь код, расположенный после этой процедуры, будет либо применен, либо отменен полностью |
ЗафиксироватьТранзакцию() | используется для фиксации изменений, произведенных в базе с момента начала транзакции |
ОтменитьТранзакцию() | используется для отмены всех изменений, произведенных в базе с момента начала транзакции |
Следует четко соблюдать последовательность использования этих операторов:
НачатьТранзакцию(); ... ЗафиксироватьТранзакцию();
Именно поэтому, запрещается использовать в транзакциях, а также в обработчиках проведения документов, интерактивные процедуры и функции, вроде: Вопрос(), Предупреждение(), ВвестиЧисло() и другие;
Для взаимодействия с пользователем в открытой транзакции можно воспользоваться такими процедурами как: Сообщить() и Состояние(). Они вполне сгодятся для вывода отладочной информации, сообщений об ошибках и состоянии обработки данных.