В режиме "Конфигуратор"
страницаВ режиме «Конфигуратор»
Как это сделать? Хороший вопрос. Давайте посмотрим на свойство Режим управления блокировкой данных нашей конфигурации. Оно установлено в значение Управляемый (рис. 14.31).

Рис. 14.31. Режим управления блокировкой данных в свойствах конфигурации
Это значит, что нам нужно использовать управляемые блокировки, которые устанавливаются средствами встроенного языка.
Необходимо заблокировать те данные, которые мы собираемся читать и впоследствии изменять. Для этого у наборов записей регистров есть свойство БлокироватьДляИзменения, которым мы и воспользуемся.
Вставим этот код перед записью пустых наборов записей (листинг 14.41).
Листинг 14.41. Фрагмент процедуры «ОбработкаПроведения()»
…
| ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
// Установим необходимость блокировки данных в регистрах СтоимостьМатериалов и ОстаткиМатериалов
Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;
Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;
// Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе
Движения.СтоимостьМатериалов.Записать();
Движения.ОстаткиМатериалов.Записать();
РезультатЗапроса = Запрос2.Выполнить();
Управляемая блокировка будет установлена в момент записи этих наборов записей, то есть как раз перед выполнением второго запроса. Что нам и требовалось.