Выбор ответа Middle Транзакции и блокировки обновлено

Блокировка вне транзакции

Вопрос

Что произойдёт, если вызвать Блокировка.Заблокировать() вне транзакции?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Будет ошибка: блокировку можно поставить только в транзакции. Управляемые блокировки живут до конца транзакции, поэтому без транзакции им негде жить, и платформа выдаёт ошибку.

Варианты ответа

  1. Будет ошибка: блокировку можно поставить только в транзакцииправильный ответ
  2. Блокировка установится и будет держаться до конца сеанса пользователя
  3. Блокировка установится на 20 секунд, потом снимется
  4. Метод ничего не сделает и вернёт Ложь без ошибки

Разбор

Управляемые блокировки живут до конца транзакции, поэтому без транзакции им негде жить, и платформа выдаёт ошибку. В обработке проведения транзакция уже открыта платформой, а в своём коде нужно НачатьТранзакцию(). Блокировок до конца сеанса нет, 20 секунд это типичный таймаут ожидания, а не время жизни, и метод не возвращает значения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме