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

Блокировка в обработчике формы

Вопрос

Что не так с этим кодом в модуле формы обработки?

&НаСервере
Процедура ПроверитьНаСервере()
	Блокировка = Новый БлокировкаДанных;
	Элемент = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
	Элемент.Режим = РежимБлокировкиДанных.Разделяемый;
	Блокировка.Заблокировать();
	ПроверитьОстатки();
КонецПроцедуры

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

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

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

Коротко

Правильный ответ: Блокировка ставится вне транзакции, будет ошибка. Управляемые блокировки существуют только в транзакции: тут транзакция не начата, и Заблокировать() выдаст ошибку.

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

  1. Блокировка ставится вне транзакции, будет ошибкаправильный ответ
  2. Код верный, блокировка сработает до конца процедуры
  3. БлокировкаДанных доступна только на клиенте
  4. Режим Разделяемый нельзя указывать для регистров

Разбор

Управляемые блокировки существуют только в транзакции: тут транзакция не начата, и Заблокировать() выдаст ошибку. Блокировку ставят в той же серверной транзакции, где читают и пишут данные. БлокировкаДанных серверный объект, разделяемый режим допустим для любых пространств.

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

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

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