Транзакции и блокировки: как их готовить программисту 1С?

YOUTUBE · 06.12.2025 18:07

Ключевые темы и таймкоды

Введение в транзакции

0:05
  • Обсуждение транзакций и блокировок.
  • Обзор основных тем: что такое транзакции, как они работают, вложенные транзакции, исключения в транзакциях, отмена транзакций, неявные транзакции.

Определение транзакции

1:22
  • Транзакция — это неделимая операция, переводящая базу данных из одного состояния в другое.
  • Основные свойства транзакции: неделимость, атомарность, изоляция.

Неявные транзакции

2:24
  • Платформа создаёт неявные транзакции в определённых ситуациях, например, при создании объектов памяти или попытке записи.
  • Внутри неявной транзакции выполняются определённые события, не требующие дополнительного объявления транзакции.

Вложенные транзакции

3:20
  • Вложенных транзакций не существует, но можно начать транзакцию несколько раз, повышая счётчик уровня транзакции.
  • Метод зафиксировать транзакцию уменьшает счётчик, и реальная фиксация происходит только при достижении счётчиком нуля.

Ошибки в транзакциях

4:50
  • Ошибки делятся на невосстановимые, приводящие к краху системы, и восстановимые, которые не вызывают серьёзных нарушений.
  • При отмене транзакции устанавливается флажок запрета фиксации, предотвращающий фиксацию транзакции.

Ошибка «в данной транзакции уже происходили ошибки»

6:44
  • Ошибка возникает, когда не была отменена предыдущая транзакция.
  • Для продолжения транзакции необходима ошибка базы данных, связанная с записью в базу данных.

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

10:17
  • Рекомендации по использованию транзакций: начать транзакцию, выполнить чтение или запись данных, зафиксировать транзакцию последним в блоке try-catch, отменить транзакцию первым в блоке исключения.
  • Вызовы начать транзакцию, зафиксировать транзакцию или отменить должны быть парными и выполняться в контексте одного метода.

Обработка исключений

12:38
  • При вызове исключения без параметров оно пробрасывается выше, предотвращая возникновение ошибки «в данной транзакции уже происходили ошибки».

Особенности работы объектов при отмене транзакции

13:18
  • Свойства объектов сохраняются, но значение ссылки для нового объекта очищается.
  • Признак проведения документа восстанавливается.
  • После отмены транзакции данные нужно перечитать.

Длина транзакции и оптимизация

14:18
  • Короткие транзакции предпочтительнее длинных.
  • В одной транзакции выполняются только неделимые действия.
  • Пример оптимизации: загрузка адресного классификатора по городу или региону.

Влияние долгого выполнения транзакции

15:35
  • Долгое выполнение транзакции блокирует объекты, что мешает другим пользователям.
  • Чем дольше выполняется транзакция, тем меньше времени остаётся для других операций.

Блокировки и их типы

16:30
  • Блокировки бывают транзакционные и объектные.
  • Объектные блокировки делятся на пессимистические и оптимистические.
  • Пессимистические блокировки блокируют любую работу с объектом.
  • Оптимистические блокировки проверяют номер поколения версии объекта и предупреждают о несоответствии.

Ответственное чтение

19:18
  • Ответственное чтение гарантирует достоверность данных.
  • Данные, прочитанные вне транзакции, могут быть недостоверными.
  • Ответственное чтение необходимо для бизнес-процессов и алгоритмов, отражающих данные.

Режимы работы платформы с транзакциями

21:27
  • Автоматические транзакции устанавливают блокировки на уровне СУБД.
  • Управляемые транзакции работают на уровне сервера 1С.
  • Автоматически-управляемый режим используется в переходном периоде.

Управляемые блокировки

22:09
  • В управляемых транзакциях блокировки устанавливаются на уровне сервера 1С.
  • Платформа отслеживает пересечения блокировок без реальных запросов в базу данных.

Несогласованность данных

23:06
  • Несогласованность данных возникает при чтении.
  • Уровни изоляции транзакции решают проблемы несогласованности.

Блокировки СУБД и режимы

24:06
  • Файловая база данных в режиме управляемых блокировок работает как автоматическая.
  • Важно тестировать в том же окружении, в котором будет работать система.
  • Конструкция для изменения работает только в автоматических транзакциях.

Рекомендации по чтению

25:46
  • Рекомендация: «Настольная книга эксперта. Профразработка в первом томе. Стандарты разработки и технологические вопросы крупных внедрений».