При разработке специфических бизнес-процессов или автоматизированных рабочих мест (АРМ) часто возникает задача ограничить возможности пользователя по созданию новых данных «вручную». Рассмотрим, как программно запретить открытие формы справочника в момент попытки создания нового элемента.
Самым эффективным способом блокировки интерактивного открытия формы является использование обработчика события ПриСозданииНаСервере в модуле формы. Логика заключается в установке параметра Отказ в значение Истина при определенных условиях.
Однако здесь важно правильно определить, создается ли новый элемент или открывается уже существующий. Метод ЭтоНовый() в данном обработчике может работать нестабильно, так как объект находится на стадии инициализации. Более надежным подходом является анализ параметра Ключ, который передается в форму при открытии.
Разберем пример реализации данного метода:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверяем, является ли текущая операция созданием нового объекта
// Если ключ пустой, значит мы создаем новый элемент
Если Параметры.Ключ.Пустая() Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедура
Таким образом, при попытке пользователя нажать кнопку «Создать» в списке справочника, форма выполнит код, установит Отказ в Истина, и окно не будет выведено на экран.
Помимо программного запрета непосредственно в форме, существуют более глобальные методы управления доступом:
Необходимо помнить, что любые проверки, описанные выше, работают только при интерактивном открытии формы пользователем. Если ваша задача — создать элемент программно (например, через Справочники.Номенклатура.СоздатьЭлемент()), то никакие формы не открываются, и, следовательно, ваши запреты в ПриСозданииНаСервере не сработают. Это позволяет создать систему, в которой данные создаются исключительно «под капотом» специализированными обработками или регламентными заданиями, исключая «шалудивые ручки» пользователей.
Рекомендуем придерживаться следующей стратегии: если цель — защитить бизнес-логику, используйте роли и права. Если цель — создать специфический интерфейс АРМ, используйте комбинацию из управления правами и программного отказа в ПриСозданииНаСервере.
Мы рассмотрели основной способ программного запрета создания элемента через установку Отказ = Истина в событии ПриСозданииНаСервере, а также затронули способы администрирования прав. Комбинируя эти подходы, вы сможете добиться необходимой гибкости и безопасности в вашей конфигурации 1С.