Skip to main content

Блокировка форм

Если в типовой конфигурации есть модули БлокировкаИзмененияОбъектов тогда блокировка форм должна осуществляться через этот механизм. image.png

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

Подготовка формы

В форме документа должны быть следующие методы (если нету тогда воспользоваться механизмом БПР “Программная доработка форм":

ПриСозданииНаСервере:

БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(Форма, Отказ, СтандартнаяОбработка);

ПриЧтенииНаСервере:

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

ПослеЗаписиНаСервере:

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

Модуль формы:

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

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

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

Подключение

Для подключения нужно:

  1. Создать свой модуль рздБлокировкаИзмененияОбъектов

  2. В методе БлокировкаИзмененияОбъектовРасширенный.ПараметрыБлокировкиИзмененияОбъекта подключить наш модуль:

    // рзд Очаковский В.М 11.01.2024 {
    рздБлокировкаИзмененияОбъектов.ДобавитьБлокировкуИзмененияОбъекта(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма);
    // }рзд Очаковский В.М 11.01.2024

Добавление проверок

Пример модуля со своими проверками
#Область СлужебныйПрограммныйИнтерфейс

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

ТипОбъекта = ТипЗнч(СсылкаНаОбъект);

Если ТипОбъекта = Тип("ДокументСсылка.ЭтапПроизводства2_2") Тогда
ДобавитьБлокировкиЭтапаПроизводства(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма);
КонецЕсли;

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Процедура ДобавитьБлокировкиЭтапаПроизводства(КоллекцияБлокировок, СсылкаНаОбъект, УправляемаяФорма)

Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
Возврат;
КонецЕсли;

ДокументПриостановлен = УправляемаяФорма.рздПриостановлен;

ПроверитьПравоРедактированияПриостановленногоДокументаПартии(КоллекцияБлокировок, СсылкаНаОбъект, ДокументПриостановлен);

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

#Область Проверки

Процедура ПроверитьПравоРедактированияПриостановленногоДокументаПартии(КоллекцияБлокировок, СсылкаНаОбъект, ДокументПриостановлен)

Если Не (Не УправлениеДоступом.ЕстьРоль("рздРедактироватьПриостановленныеПартииПроизводства")
И ДокументПриостановлен) Тогда
Возврат;
КонецЕсли;

Комментарий = НСтр("ru = 'Нет прав для редактирования приостановленного документа'");

БлокировкаИзмененияОбъекта = БлокировкаИзмененияОбъектов.ОписаниеБлокировкиИзмененияОбъекта(
"рздРедактироватьПриостановленныеПартииПроизводства",
Комментарий,
Ложь,
Комментарий);

КоллекцияБлокировок.Добавить(БлокировкаИзмененияОбъекта);

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

#КонецОбласти

#КонецОбласти