Добрый день.
Есть база БП (На данный момент 3.0.67.54)
В ней создан самописный документ "Заявка". Режим управления блокировкой данных "Управляемый"
При открытии формы устанавливается блокировка кодом

```1c
    Попытка
    ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка,,ЭтаФорма.УникальныйИдентификатор);
    Исключение
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Документ редактируется другим пользователем");
    ЭтаФорма.ТолькоПросмотр = Истина;
    КонецПопытки;
```

Код работает. Все отлично.
Есть обработка, которая изменяет некоторые реквизиты документов данного типа, Естественно документы выбираются запросом по условиям отбора. Нужно чтобы перед отработкой алгоритма, проверялось наличие заблокированных (по факту открытых документов). Если заблокирован, то выход. Если в все ок, то на все выбранные документы установить блокировку. чтобы пока отрабатывает обработка никто не мог открыть.

Думал, что при открытом документе этот код вызовет ошибку, будет подвисание. Все отработало.

```1c
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("Документ.ЗаявкаЗаказчикаНаПеревоз");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса[2].Выгрузить();
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Ссылка", "СсылкаЗаявки");

    Блокировка.Заблокировать();
```

Как вариант сделать РС, куда писать при открытии/закрытии документа,
но хотелось бы без него.
---
Вышел из положения вот так

```1c
    НачатьТранзакцию();
    // в цикле перебираю ссылки для изменения
    Попытка
    ТекДок.Заблокировать();
    Исключение
    ОтменитьТранзакцию();
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Невозможно заблокировать документ "+Строка(ТекДок) ;
    Сообщение.Сообщить();
    Возврат;
    КонецПопытки;

    .......
    ЗафиксироватьТранзакцию();
```

работает.
не знаю на сколько правильно с точки зрения правильности методов разработки "1с"
но код взял отсюда https://its.1c.ru/db/v8std#content:-2145783157:hdoc
---
БлокировкаДанных работает только в транзакции. И она блокирует данные. Есть блокировка объекта. И она блокирует объект.
---
спасиб за наводку.
---
Как вариант тем же кодом, что и при открытии формы. Но тогда в цикле придется перебрать все документы
---
примерно так и сделал
---
Добавь какой нибудь реквизит формы и при блокировке заноси допустим " " и в запросе используй что данное поле не <> " "
---
Вышел из положения вот так

```1c
    НачатьТранзакцию();
    // в цикле перебираю ссылки для изменения
    Попытка
    ТекДок.Заблокировать();
    Исключение
    ОтменитьТранзакцию();
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Невозможно заблокировать документ "+Строка(ТекДок) ;
    Сообщение.Сообщить();
    Возврат;
    КонецПопытки;

    .......
    ЗафиксироватьТранзакцию();
```

работает.
не знаю на сколько правильно с точки зрения правильности методов разработки "1с"
но код взял отсюда https://its.1c.ru/db/v8std#content:-2145783157:hdoc
---
Кажется много кода 1с.
Если на Конфигурации режим управления блокировкой данных "Управляемый"
и на форме документа - режим управления блокировкой данных "Управляемый"
и форма документа создана стандартная! (как форма создавалсь важно)
Программа 1С сама будет отслеживать изменения. Т.е. будет работать Пессимистическая блокировка данных.

Может кто из экспертов подскажет, так это или нет?
---
и на форме документа - режим управления блокировкой данных "Управляемый"
это как проверить?
---
У документа - форма - свойства
---
http://forum.infostart.ru/forum9/topic66579/message1479509/#message1479509
---
см 1 пост