Выберите свой город

Наверх

Транзакции «1С». Что это такое, и зачем они нужны?

транзакция в «1С»

Известно ли вам, за что отвечают транзакции «1С»? В одной из наших статей мы уже рассказывали о таких понятиях, как блокировки и взаимоблокировки. Важно отметить, что эти явления возможны именно благодаря транзакциям «1С».

Что такое транзакция в «1С»?

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

Транзакции могут быть выполнены до конца или не выполнены вообще. Варианта «наполовину выполненная транзакция» не существует. В СУБД транзакции фиксируются методом COMMIT.

Какими свойствами должна обладать транзакция?

ACID (Atomicity, Consistency, Isolation, Durability) – самый распространенный набор требований к транзакциям «1С».

Обязательные свойства любой транзакции:

  • Атомарность (неделимость). Необходима для того, чтобы после завершения транзакции в «1С» все данные были согласованы. Даже при простом добавлении записи может произойти рассогласование. Представим ситуацию, что мы пытаемся добавить запись вне транзакции. Сначала добавляем запись в основную таблицу, а затем в индексы. Запись удастся добавить только в первый индекс. При попытке добавить во второй, что-то может помешать это сделать (например, отключится питание). Данные перейдут в несогласованное состояние – в таблице запись есть, а в индексе о ней нет сведений. И здесь на помощь приходит атомарность. Цель атомарности – довести все действия до конца.
  • Изоляция. Это свойство обеспечивает параллельную работу пользователей и предотвращает порчу общих данных. Например, чтобы не вышло ситуации, когда 2 пользователя меняют один и тот же документ и тем самым перестирают данные друг друга. В таких случаях и нужна изоляция. Цель изоляции в транзакциях «1С» – защитить данные от действия других транзакций. Блокировки выступают как средство обеспечения изоляции транзакции.

Как работать с транзакциями «1С»?

Создавать транзакции можно двумя способами:

  • Автоматически. Например, обработка проведения документа или запись элемента справочника в базу данных. Чтобы узнать, активна ли транзакция, достаточно применить опцию «Транзакция активна()».
  • Самостоятельно. (когда создает сам разработчик). Процесс проходит при помощи действий: «Начать Транзакцию()», по окончании транзакции «Зафиксировать Транзакцию()» и в случае необходимости «Отменит Транзакцию()».

Вложенные транзакции не поддерживаются в «1С». Если вы несколько раз открываете транзакцию, она «сливается» в одну. При фиксации или отмене эти действия производятся со всеми транзакциями, активируемыми ранее.

При низкой производительности «1С» правильно созданные транзакции помогут работать быстрее. Когда транзакция проводится без ошибок, то в системе не возникает блокировок и взаимоблокировок. Вы не увидите сообщений об ошибке, и отмены проведения документа не произойдет.

Если у вас возникли вопросы по созданию транзакций и оптимизации «1С», обратитесь за консультацией к специалистам «ГЭНДАЛЬФ».

Получить консультацию

Консультация бесплатна!

Поделиться