Для разработчика » Содержание справочника » Раздел 1. Введение во встроенный язык » 
0

Транзакции

Транзакция — это цепочка действий над базой данных, воспринимаемая ею как единое целое. В результате транзакции база данных либо переходит из одного целостного состояния в другое, либо остается в исходном состоянии.

Механизм транзакций используется в тех случаях, когда бизнес-логика предусматривает одновременное изменение нескольких объектов в базе. Если в этом процессе произойдет хотя бы одна ошибка, все другие изменения будут отменены. Т.е. база вернется в состояние, в каком она находилась до начала транзакции. Это критически важно при многопользовательской работе в базе данных, где одну и ту же информацию могут менять несколько пользователей. Транзакция, фактически, блокирует изменяемые данные для других пользователей на все время этого изменения.

Во встроенном языке на платформе 1С:Предприятие 7.7 транзакции могут использоваться двумя способами:

  1. Неявно — при вызове предопределенных процедур ОбработкаПроведения() и ОбработкаУдаленияПроведения() модуля документа;
  2. Явно — в других модулях конфигурации с помощью специальных процедур НачатьТранзакцию() и ЗафиксироватьТранзакцию();

Процедуры для работы с транзакциями

Имя процедуры Описание
НачатьТранзакцию() используется для явного начала транзакции. Весь код, расположенный после этой процедуры, будет либо применен, либо отменен полностью
ЗафиксироватьТранзакцию() используется для фиксации изменений, произведенных в базе с момента начала транзакции
ОтменитьТранзакцию() используется для отмены всех изменений, произведенных в базе с момента начала транзакции

Следует четко соблюдать последовательность использования этих операторов:

НачатьТранзакцию();

    ...

ЗафиксироватьТранзакцию();
Также необходимо понимать, что, поскольку, транзакция блокирует изменяемые данные для других пользователей, они ожидают их освобождения. Поэтому, транзакцию нужно заканчивать как можно скорее.
Именно поэтому, запрещается использовать в транзакциях, а также в обработчиках проведения документов, интерактивные процедуры и функции, вроде: Вопрос(), Предупреждение(), ВвестиЧисло() и другие;

Для взаимодействия с пользователем в открытой транзакции можно воспользоваться такими процедурами как: Сообщить() и Состояние(). Они вполне сгодятся для вывода отладочной информации, сообщений об ошибках и состоянии обработки данных.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *