Установка блокировки на документы

1. stepani4 19.03.19 23:17 Сейчас в теме
Добрый день.
Есть база БП (На данный момент 3.0.67.54)
В ней создан самописный документ "Заявка". Режим управления блокировкой данных "Управляемый"
При открытии формы устанавливается блокировка кодом
Попытка
        ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка,,ЭтаФорма.УникальныйИдентификатор);
    Исключение
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Документ редактируется другим пользователем");
        ЭтаФорма.ТолькоПросмотр = Истина;
    КонецПопытки;

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

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

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


Как вариант сделать РС, куда писать при открытии/закрытии документа,
но хотелось бы без него.
По теме из базы знаний
Найденные решения
6. stepani4 20.03.19 09:50 Сейчас в теме
Вышел из положения вот так
НачатьТранзакцию();
// в цикле перебираю ссылки для изменения
Попытка
		ТекДок.Заблокировать();
	Исключение
		    ОтменитьТранзакцию();
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Невозможно заблокировать документ "+Строка(ТекДок) ;
			Сообщение.Сообщить();
			Возврат;
		КонецПопытки;

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

работает.
не знаю на сколько правильно с точки зрения правильности методов разработки "1с"
но код взял отсюда https://its.1c.ru/db/v8std#content:-2145783157:hdoc
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Leon75 19.03.19 23:32 Сейчас в теме
(1)БлокировкаДанных работает только в транзакции. И она блокирует данные. Есть блокировка объекта. И она блокирует объект.
5. stepani4 20.03.19 09:43 Сейчас в теме
3. Dmitrij-2 45 20.03.19 06:07 Сейчас в теме
(1) Как вариант тем же кодом, что и при открытии формы. Но тогда в цикле придется перебрать все документы
stepani4; +1 Ответить
7. stepani4 20.03.19 09:51 Сейчас в теме
примерно так и сделал
4. ranis888 104 20.03.19 08:00 Сейчас в теме
Добавь какой нибудь реквизит формы и при блокировке заноси допустим " " и в запросе используй что данное поле не <> " "
6. stepani4 20.03.19 09:50 Сейчас в теме
Вышел из положения вот так
НачатьТранзакцию();
// в цикле перебираю ссылки для изменения
Попытка
		ТекДок.Заблокировать();
	Исключение
		    ОтменитьТранзакцию();
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Невозможно заблокировать документ "+Строка(ТекДок) ;
			Сообщение.Сообщить();
			Возврат;
		КонецПопытки;

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

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

Может кто из экспертов подскажет, так это или нет?
9. stepani4 20.03.19 16:58 Сейчас в теме
(8)
и на форме документа - режим управления блокировкой данных "Управляемый"

это как проверить?
10. user-z99999 67 20.03.19 17:03 Сейчас в теме
(9)
У документа - форма - свойства
11. stepani4 20.03.19 23:16 Сейчас в теме
(10)
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот