Каталог решений - Пример использования механизма «Блокировки изменения объектов» (БП, ЗУП, УХ, ЕРП)

Пример использования механизма «Блокировки изменения объектов» (БП, ЗУП, УХ, ЕРП)

Пример использования механизма «Блокировки изменения объектов» (БП, ЗУП, УХ, ЕРП)

В наличии

Механизм позволяет добавлять обработчики блокировки формы от изменения пользователем с выводом предупреждения «Документ не редактируется по причине:» и указанием причин блокировки. Также по некоторому условию может быть выведена кнопка «Разблокировать форму».

Категория:

Описание

Рассмотрим работу механизма на примере доработки с помощью расширения документа Отражение зарплаты в бухучете ЗУП.

1. Блокируемая форма

При подключении механизма на форме создаются необходимые реквизиты, поля и команды для вывода сообщения о блокировки и возможности разблокировать форму.  

Добавляем в расширение обработчики событий формы с типом Вызывать после:

&НаСервере
Процедура БРО_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка);
	
КонецПроцедуры

&НаСервере
Процедура БРО_ПриЧтенииНаСервереПосле(ТекущийОбъект)
	
	БлокировкаИзмененияОбъектов.ПриЧтенииНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект);

КонецПроцедуры

&НаСервере
Процедура БРО_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
	
	БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);

КонецПроцедуры

Кнопка разблокировки по-умолчанию создается в Командной панели в дополнительном подменю Ещё, однако в нашем документе Отражение зарплаты в бухучете панель не отображается, вместо нее создана группа КоманднаяПанельФормы, поэтому перенесем созданную кнопку в данную группу:

	КнопкаРазблокировать = Элементы.РазблокироватьФормуДляИзмененияОбъекта;
	Элементы.Переместить(КнопкаРазблокировать, Элементы.КоманднаяПанельФормы);

Так же в модуле формы размещаем обработчик команды разблокировки:

&НаКлиенте
Процедура Подключаемый_РазблокироватьФормуОбъекта(Команда)

	БлокировкаИзмененияОбъектовКлиент.РазблокироватьФормуОбъекта(ЭтотОбъект, Объект.Ссылка);
	
КонецПроцедуры

 

2. Обработчик блокировки

Обработчик блокировки разместим в общем модуле БРО_Сервер:

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

Вызов обработчика разместим в  расширении модуля БлокировкаИзмененияОбъектовБазовый:

&Вместо("ПараметрыБлокировкиИзмененияОбъекта")
Функция БРО_ПараметрыБлокировкиИзмененияОбъекта(СсылкаНаОбъект, УправляемаяФорма)
	
	КоллекцияБлокировок = ПродолжитьВызов(СсылкаНаОбъект, УправляемаяФорма);	
	БРО_Сервер.ДобавитьБлокировкуИзмененияОбъекта(КоллекцияБлокировок, СсылкаНаОбъект);

	Возврат КоллекцияБлокировок;
	
КонецФункции

У расширения выключаем Безопасный режим.

 

3. Проверяем

При открытии формы проверяется условие блокировки и в форме устанавливается свойство ТолькоПросмотр, выводится предупреждающая надпись:

 

 

Если блокировку допустимо отключать, в меню Ещё создается кнопка разблокировки:

 

 

Во вложении расширение с данным примером для ЗУП и отдельно для БП, ЕРП, УХ (документ Реализация товаров услуг, общая форма).

Тестирование проводилось на ЗУП 3.1.23.558 и БП 3.0.135.16.

has been added to your cart:
Оформление заказа