По просьбе @PlugFox, тут нет ничего от БСП, но тут есть порядок действий, которые надо использовать при ответственной записи в базу данных.
// Безответственное чтение - доверять данным нельзя
Ссылка = Запрос.Выполнить.БлаБла.Ссылка;
НачатьТранзакцию();
Попытка
// Надо ставить исключительную блокировку на изменяемые данные.
// Чтобы никто их не мог прочитать до конца транзакции.
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Изменяемый");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
Блокировка.Заблокировать();
// Надо ставить разделяемую блокировку на читаемые данные.
// Чтобы никто их не мог записать до конца транзакции, но все могли читать.
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Читаемый");
ЭлементБлокировки.УстановитьЗначение("ИзменяемыйВИзмерении", Ссылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Блокировка.Заблокировать();
// Ответственное чтение - доверять данным можно.
Объект = Ссылка.ПолучитьОбъект();
Читаемый = РегистрНакопления.Читаемый.СуперПуперВыборка();
// Выполнить установку пессимистической блокировки объекта от изменения другими режимами или пользователями.
Объект.Заблокировать();
// Изменение объекта
Объект.Реквизит = Читаемый;
// Запись измененного объекта и снятие объектной пессимистической блокировки.
Объект.Записать();
// Фиксация Транзакции и снятие блокировок на изменение и на чтение данных
ЗафиксироватьТранзакцию();
Исключение
// Отмена транзакции в случае ошибки в блоке транзакции.
ОтменитьТранзакцию();
// Проброс исходного исключения выше по стеку.
ВызватьИсключение;
КонецПопытки;