Блокировка форм
Если в типовой конфигурации есть модули БлокировкаИзмененияОбъектов тогда блокировка форм должна осуществляться через этот механизм.
Если подключается дата запрета к новому документу, нужно не забыть подключить блокировку форм.
Подготовка формы
В форме документа должны быть следующие методы (если нету тогда воспользоваться механизмом БПР “Программная доработка форм":
ПриСозданииНаСервере:
БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(Форма, Отказ, СтандартнаяОбработка);
ПриЧтенииНаСервере:
БлокировкаИзмененияОбъектов.ПриЧтенииНаСервереФормыОбъекта(Форма, ТекущийОбъект);
ПослеЗаписиНаСервере:
БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта(Форма, ТекущийОбъект, ПараметрыЗаписи);
Модуль формы:
&НаКлиенте
Процедура Подключаемый_РазблокироватьФормуОбъекта(Команда)
БлокировкаИзмененияОбъектовКлиент.РазблокироватьФормуОбъекта(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
Подключение
Для подключения нужно:
-
Создать свой модуль рздБлокировкаИзмененияОбъектов
-
В методе БлокировкаИзмененияОбъектовРасширенный.ПараметрыБлокировкиИзмененияОбъекта подключить наш модуль:
// рзд Очаковский В.М 11.01.2024 {
рздБлокировкаИзмененияОбъектов.ДобавитьБлокировкуИзмененияОбъекта(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма);
// }рзд Очаковский В.М 11.01.2024
Добавление проверок
Пример модуля со своими проверками
#Область СлужебныйПрограммныйИнтерфейс
Процедура ДобавитьБлокировкуИзмененияОбъекта(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма) Экспорт
ТипОбъекта = ТипЗнч(СсылкаНаОбъект);
Если ТипОбъекта = Тип("ДокументСсылка.ЭтапПроизводства2_2") Тогда
ДобавитьБлокировкиЭтапаПроизводства(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ДобавитьБлокировкиЭтапаПроизводства(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма)
Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
Возврат;
КонецЕсли;
ДокументПриостановлен = УправляемаяФорма.рздПриостановлен;
ПроверитьПравоРедактированияПриостановленногоДокументаПартии(КоллекцияБлокировок, СсылкаНаОбъект, ДокументПриостановлен);
КонецПроцедуры
#Область Проверки
Процедура ПроверитьПравоРедактированияПриостановленногоДокументаПартии(КоллекцияБлокировок, СсылкаНаОбъект, ДокументПриостановлен)
Если Не (Не УправлениеДоступом.ЕстьРоль("рздРедактироватьПриостановленныеПартииПроизводства")
И ДокументПриостановлен) Тогда
Возврат;
КонецЕсли;
Комментарий = НСтр("ru = 'Нет прав для редактирования приостановленного документа'");
БлокировкаИзмененияОбъекта = БлокировкаИзмененияОбъектов.ОписаниеБлокировкиИзмененияОбъекта(
"рздРедактироватьПриостановленныеПартииПроизводства",
Комментарий,
Ложь,
Комментарий);
КоллекцияБлокировок.Добавить(БлокировкаИзмененияОбъекта);
КонецПроцедуры
#КонецОбласти
#КонецОбласти