1C-CodeТеория → Транзакции и блокировки

Транзакции и блокировки в 1С

Целостность данных при одновременной работе: транзакции, блокировки, взаимоблокировки. Любимая тема senior-собеседований.

Ниже — 2 вопроса с разбором. Всего по этой теме 7 вопросов, и в тренажёре они задаются вперемешку и без подсказок: там проверяется, что тема уложилась, а не что её приятно читать.

Пройти тему в тренажёре

Разбор

Что произойдёт, если внутри транзакции возникнет исключение и его перехватят Попыткой, но не вызовут ОтменитьТранзакцию?

Перехват исключения не завершает транзакцию. Она остаётся открытой в состоянии «только для отмены», и любая последующая запись даст ошибку. Поэтому в блоке Исключение обязательно вызывают ОтменитьТранзакцию, а уже потом обрабатывают ошибку.

Зачем нужна управляемая блокировка, если проверка остатка уже выполнена запросом?

Классическая гонка: два проведения одновременно читают остаток 10, каждому нужно 7, оба видят «хватает» и оба списывают. Итог — минус на складе. Блокировка не даёт второму сеансу прочитать данные, пока первый не завершит транзакцию.

О чём ещё спрашивают по этой теме

Ответы и разборы — в тренажёре.

Другие темы

Запросы и оптимизация8 вопросов Регистры и учёт7 вопросов Язык и типы данных10 вопросов СКД6 вопросов Архитектура и производительность6 вопросов Обмен данными и интеграции6 вопросов Права, роли и RLS6 вопросов Фоновые и регламентные задания6 вопросов