Пример использования механизма "Блокировки изменения объектов" (БП, ЗУП, УХ, ЕРП)
Разработка - Механизмы типовых конфигураций
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Рассмотрим работу механизма на примере доработки с помощью расширения документа Отражение зарплаты в бухучете ЗУП.
1. Блокируемая форма
При подключении механизма на форме создаются необходимые реквизиты, поля и команды для вывода сообщения о блокировки и возможности разблокировать форму.
Добавляем в расширение обработчики событий формы с типом Вызывать после:
&НаСервере
Процедура БРО_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура БРО_ПриЧтенииНаСервереПосле(ТекущийОбъект)
БлокировкаИзмененияОбъектов.ПриЧтенииНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура БРО_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
Кнопка разблокировки по-умолчанию создается в Командной панели в дополнительном подменю Ещё, однако в нашем документе Отражение зарплаты в бухучете панель не отображается, вместо нее создана группа КоманднаяПанельФормы, поэтому перенесем созданную кнопку в данную группу:
КнопкаРазблокировать = Элементы.РазблокироватьФормуДляИзмененияОбъекта;
Элементы.Переместить(КнопкаРазблокировать, Элементы.КоманднаяПанельФормы);
Так же в модуле формы размещаем обработчик команды разблокировки:
&НаКлиенте
Процедура Подключаемый_РазблокироватьФормуОбъекта(Команда)
БлокировкаИзмененияОбъектовКлиент.РазблокироватьФормуОбъекта(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
2. Обработчик блокировки
Обработчик блокировки разместим в общем модуле БРО_Сервер:
Функция ДобавитьБлокировкуИзмененияОбъекта(КоллекцияБлокировок, СсылкаНаОбъект) Экспорт
Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ОтражениеЗарплатыВБухучете") Тогда
Если ЕстьПроведенныеПлатежныеПоручения(СсылкаНаОбъект) Тогда
ИднтификаторБлокировки = "БРО_ОтражениеЗарплатыВБухучете";
ОписаниеБлокировки = "На основании документа созданы проведенные Платежные поручения";
ДопустимоОтключать = Пользователи.РолиДоступны("БРО_СнятиеБлокировкиДокумента");
БлокировкаИзмененияОбъекта = БлокировкаИзмененияОбъектов.ОписаниеБлокировкиИзмененияОбъекта(
ИднтификаторБлокировки,
ОписаниеБлокировки,
ДопустимоОтключать);
КоллекцияБлокировок.Добавить(БлокировкаИзмененияОбъекта);
КонецЕсли;
КонецЕсли;
КонецФункции
Вызов обработчика разместим в расширении модуля БлокировкаИзмененияОбъектовБазовый:
&Вместо("ПараметрыБлокировкиИзмененияОбъекта")
Функция БРО_ПараметрыБлокировкиИзмененияОбъекта(СсылкаНаОбъект, УправляемаяФорма)
КоллекцияБлокировок = ПродолжитьВызов(СсылкаНаОбъект, УправляемаяФорма);
БРО_Сервер.ДобавитьБлокировкуИзмененияОбъекта(КоллекцияБлокировок, СсылкаНаОбъект);
Возврат КоллекцияБлокировок;
КонецФункции
У расширения выключаем Безопасный режим.
3. Проверяем
При открытии формы проверяется условие блокировки и в форме устанавливается свойство ТолькоПросмотр, выводится предупреждающая надпись:

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

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