Как ограничить список доступных для редактирования элементов в форме настройки формы?

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

В процессе разработки на платформе 1С:Предприятие 8.3 часто возникают задачи по тонкой настройке пользовательского интерфейса. Одной из таких задач является желание разработчика ограничить возможность пользователя изменять состав полей, их порядок или группировку через стандартный механизм Изменить форму. Давайте разберем, возможно ли реализовать такой запрет штатно и как поступить, если бизнес-задача требует жесткого контроля над интерфейсом.

Анализ архитектурных ограничений

Прежде всего, важно понимать, что стандартная форма Настройка формы является системным инструментом платформы. Она работает как динамический анализатор структуры элементов управляемой формы. Когда пользователь открывает это окно, платформа самостоятельно считывает всё дерево элементов, включая программно созданные объекты. На текущий момент в объектной модели 1С отсутствуют методы или свойства, позволяющие передать в этот системный диалог список «разрешенных» или «запрещенных» элементов.

Многие разработчики ошибочно пытаются воздействовать на этот механизм через такие свойства, как ИспользоватьВсегда или методы управления видимостью. Однако стоит уяснить следующее:

  1. Свойства реквизитов формы Видимость и Доступность напрямую влияют на работу пользователя с формой. Если вы программно скроете элемент, чтобы он не появился в настройке формы, он одновременно исчезнет и с самой формы, что сделает невозможной работу с данными.
  2. Системная логика Изменить форму заложена глубоко в платформе и не предполагает «фильтрации» по правам доступа для отдельных веток дерева элементов формы.

Решение задачи: альтернативный подход

Поскольку прямое ограничение штатного окна невозможно, профессиональная разработка в 1С предполагает перенос логики настройки в специализированный механизм. Рассмотрим шаги, которые позволят реализовать требуемый функционал:

Шаг 1: Создание собственного регистра настроек

Для управления видимостью элементов в разрезе пользователей и конкретных форм необходимо создать РегистрСведений. В нем мы будем хранить информацию о том, какие именно элементы или колонки доступны данному пользователю для отображения и редактирования.

Структура регистра может выглядеть следующим образом:

Шаг 2: Программное управление видимостью при создании формы

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

Шаг 3: Отказ от стандартной настройки формы

Чтобы пользователь не мог обойти установленные ограничения через кнопку Ещё — Изменить форму, самым надежным способом является её полное отключение. Для этого в свойствах формы или программно (через управление командным интерфейсом) следует скрыть стандартную команду настройки.

Затем мы создаем свою собственную команду НастроитьВидимость, которая открывает кастомную обработку или диалоговую форму. В этой форме мы выводим только тот список элементов, который разрешен пользователю для редактирования.

Реализация собственного окна настроек выглядит примерно так:


// Пример логики заполнения списка для своей формы настройки
Для Каждого ЭлементСписка Из СписокДоступныхЭлементов Цикл
    // Проверяем право пользователя на изменение этого элемента
    Если ПраваДоступаНаНастройку(ЭлементСписка.Имя) Тогда
        НоваяСтрока = СписокДляВыбора.Добавить();
        НоваяСтрока.Имя = ЭлементСписка.Имя;
        НоваяСтрока.Видимость = ЭлементСписка.Видимость;
    КонецЕсли;
КонецЦикла;

Почему это лучший путь?

Рассмотренный нами вариант решения задачи через РегистрСведений и создание своей формы настроек является единственным архитектурно верным способом в 1С. Это дает вам:

Таким образом, вместо борьбы с системным диалогом Изменить форму, который не предназначен для фильтрации, мы создаем собственную управляемую среду. Это стандартная практика для корпоративных систем, требующих жесткой дисциплины интерфейса.

← На главную