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