🚂 DEADLOCK в 1С: когда два поезда встретились в одном тоннеле
Представьте: два поезда движутся навстречу друг другу по одному пути. Оба заняли участок дороги, и ни один не может продолжить движение.
Примерно так работает взаимная блокировка (Deadlock) в 1С. 🔒
💻 Как это выглядит на практике?
Одна транзакция заблокировала документ и ждёт освобождения регистра. Другая — заблокировала регистр и ждёт тот самый документ.
Получается замкнутый круг. 🔄
⚠️ Что в итоге? СУБД обнаруживает Deadlock и прерывает одну из транзакций. А пользователь получает ошибку вместо проведённого документа.
🛠 Как избежать? Соблюдать единый порядок блокировок, сокращать время транзакций и не блокировать лишние данные.
И помните: код может идеально работать у одного пользователя, но создавать проблемы, когда в базе работают десятки. 😉