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