Транзакции в 1С
В этом материале мы расскажем о «зоне ответственности» транзакций «1С». О том, что такое блокировки и взаимоблокировки мы уже писали, так вот, данные действия являются прямым следствием транзакций «1С».
Что же из себя представляет транзакция в 1С?
По определению, транзакция в 1С это последовательность действий, которая переводит базу данных из одного целостного состояния в другое целостное состояние. К примеру - процесс перевода денег с одной банковской карты на другую.
Итог транзакций может быть диаметрально противоположен: они либо выполняются до конца, либо в принципе невыполнимы. Такого понятия как «частично выполненная транзакция» нет. В СУБД транзакции фиксируются с помощью COMMIT.
Свойства транзакций
Обозначим наиболее часто встречающие требования к транзакциям «1С» - ACID (Atomicity, Consistency, Isolation, Durability).
Есть перечень свойств, которые должны быть у каждой транзакции:
1. Атомарность (неделимость).
Суть ее состоит в том, чтобы по окончании транзакции все сведения были согласованы. Ведь даже если добавили незначительную запись, то вполне может возникнуть рассогласование.
Рассмотрим пример, когда происходит попытка внести запись вне транзакции. Т.е. вначале пользователь добавляет запись в основную таблицу, а потом в индексы. При этом возможно будет внести новые данные лишь в первый индекс. Во второй сделать это будет проблематично, могут возникнуть непредвиденные помехи (к примеру, отключится электропитание).
Новые сведения получат статус «несогласованных» – т.е. в таблице все отражено, а в индексе нет информации. На этом этапе и «подключается» атомарность для того, чтобы те или иные действия были завершены.
2. Изоляция.
Данное свойство «отвечает» за параллельный режим работы пользователей и помогает предотвратить потерю общих данных. К примеру, может возникнуть ситуация, при которой два пользователя вносят изменения в один документ, и, как результат, стирают изменения друг друга. Здесь и приходит на помощь изоляция.
Главная ее задача – защищать информацию от других транзакций. Блокировки при этом обеспечивают изоляцию транзакции.
Cпособы создания транзакции
1. Автоматический. К примеру, обработать проведение документа или запись элемента справочника в информационную базу. Увидеть, активна ли транзакция или нет, поможет опция «Транзакция активна()».
2. Самостоятельный. (Т.е., когда ее создает разработчик). Пошагово это выглядит так: «Начать Транзакцию()», в заключении «Зафиксировать Транзакцию()», либо (при необходимости) «Отменит Транзакцию()».
Отметим, что вложенные транзакции 1С не поддерживает. Если пользователь периодически открывает транзакцию, она «объединяется» и «превращается» в одну. Если проводится фиксация или отмена, то это распространяется на все транзакции, которые были активированы до этого.
Возможно, что вас не устраивает производительность «1С». Повысить скорость возможно с помощью верно созданной транзакции. Если пользователь все проводит правильно, то не будет блокировок и взаимоблокировок. Не будут отображаться ошибки, и система не будет отменять проведение документа.
На данном сайте мы используем фаилы cookie, чтобы сделать Вашу работу наиболее комфортной. Продолжая пользоваться нашим сайтом, не меняя настроек, Вы тем самым выражаете согласие на использование нами данных фаилов. Более подробно Вы можите почитать о них в раздела Политика конфиденциальности.