Как узнать заблокирован ли объект (документ, справочник) и кто заблокировал

Блокировку накладывает метод "Заблокировать()" и\или "ЗаблокироватьДанныеДляРедактирования()". Если объект уже заблокирован будет выдано исключение.

Для управляемых форм:

Попытка
	ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка,, ЭтаФорма.УникальныйИдентификатор);
Исключение
	Ошибка = ОписаниеОшибки();
	ОбрезанаОшибка = Сред(Ошибка, Найти(Ошибка, "сеанс:")+6);
	НомерСеанса = Число(Сред(ОбрезанаОшибка, 0 , Найти(ОбрезанаОшибка,", начат:")-1));
	АктивныеСеансы = ПолучитьСеансыИнформационнойБазы();
	ИмяПользователяЗаблокировавшегоДок = "";
	Для Каждого Элемент Из АктивныеСеансы Цикл
		Если Элемент.НомерСеанса = НомерСеанса Тогда
			ИмяПользователяЗаблокировавшегоДок = Элемент.Пользователь.ПолноеИмя;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Сообщить("Объект заблокирован пользователем: " + ИмяПользователяЗаблокировавшегоДок + "" + Сред(ОбрезанаОшибка, Найти(ОбрезанаОшибка,", начат:")));
	
	ЭтаФорма.ТолькоПросмотр = Истина;
КонецПопытки;

Для обычных:

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

По окончании работы с объектом можно вызвать методы "Разблокировать()" и "РазблокироватьДанныеДляРедактирования()".

Добавить комментарий