Как запретить открытие формы при создании нового элемента справочника в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке специфических бизнес-процессов или автоматизированных рабочих мест (АРМ) часто возникает задача ограничить возможности пользователя по созданию новых данных «вручную». Рассмотрим, как программно запретить открытие формы справочника в момент попытки создания нового элемента.

Использование обработчика «ПриСозданииНаСервере»

Самым эффективным способом блокировки интерактивного открытия формы является использование обработчика события ПриСозданииНаСервере в модуле формы. Логика заключается в установке параметра Отказ в значение Истина при определенных условиях.

Однако здесь важно правильно определить, создается ли новый элемент или открывается уже существующий. Метод ЭтоНовый() в данном обработчике может работать нестабильно, так как объект находится на стадии инициализации. Более надежным подходом является анализ параметра Ключ, который передается в форму при открытии.

Разберем пример реализации данного метода:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверяем, является ли текущая операция созданием нового объекта
    // Если ключ пустой, значит мы создаем новый элемент
    Если Параметры.Ключ.Пустая() Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедура

Таким образом, при попытке пользователя нажать кнопку «Создать» в списке справочника, форма выполнит код, установит Отказ в Истина, и окно не будет выведено на экран.

Альтернативные методы ограничения доступа

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

  1. Настройка прав доступа (Роли): Вы можете отобрать право «Интерактивное добавление» для конкретного справочника в конфигураторе. Это наиболее правильный путь с точки зрения безопасности, так как пользователь не сможет создать элемент даже через механизмы, которые мы могли не учесть в коде формы.
  2. Использование функциональных опций: Если необходимость запрета зависит от настроек системы, используйте функциональные опции для управления видимостью кнопок создания в командном интерфейсе.
  3. Управление командным интерфейсом: Вы можете скрыть стандартные команды создания, переопределив параметры формы или программно удалив команды из интерфейса в модуле формы списка.

Важные замечания по архитектуре

Необходимо помнить, что любые проверки, описанные выше, работают только при интерактивном открытии формы пользователем. Если ваша задача — создать элемент программно (например, через Справочники.Номенклатура.СоздатьЭлемент()), то никакие формы не открываются, и, следовательно, ваши запреты в ПриСозданииНаСервере не сработают. Это позволяет создать систему, в которой данные создаются исключительно «под капотом» специализированными обработками или регламентными заданиями, исключая «шалудивые ручки» пользователей.

Рекомендуем придерживаться следующей стратегии: если цель — защитить бизнес-логику, используйте роли и права. Если цель — создать специфический интерфейс АРМ, используйте комбинацию из управления правами и программного отказа в ПриСозданииНаСервере.

Заключение

Мы рассмотрели основной способ программного запрета создания элемента через установку Отказ = Истина в событии ПриСозданииНаСервере, а также затронули способы администрирования прав. Комбинируя эти подходы, вы сможете добиться необходимой гибкости и безопасности в вашей конфигурации 1С.

← На главную