Выбор ответа Middle Транзакции и блокировки обновлено
Блокировка вне транзакции
Вопрос
Что произойдёт, если вызвать Блокировка.Заблокировать() вне транзакции?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Будет ошибка: блокировку можно поставить только в транзакции. Управляемые блокировки живут до конца транзакции, поэтому без транзакции им негде жить, и платформа выдаёт ошибку.
Варианты ответа
- Будет ошибка: блокировку можно поставить только в транзакцииправильный ответ
- Блокировка установится и будет держаться до конца сеанса пользователя
- Блокировка установится на 20 секунд, потом снимется
- Метод ничего не сделает и вернёт Ложь без ошибки
Разбор
Управляемые блокировки живут до конца транзакции, поэтому без транзакции им негде жить, и платформа выдаёт ошибку. В обработке проведения транзакция уже открыта платформой, а в своём коде нужно НачатьТранзакцию(). Блокировок до конца сеанса нет, 20 секунд это типичный таймаут ожидания, а не время жизни, и метод не возвращает значения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.