Как запретить пользователям изменять форму документа в 1С:Комплексная автоматизация 2.0

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

В процессе эксплуатации систем на базе 1С:Предприятие 8.3, таких как «Комплексная автоматизация 2.0» или ERP, администраторы часто сталкиваются с необходимостью жестко зафиксировать интерфейс документов. Это требуется для того, чтобы пользователи случайно или намеренно не скрывали важные реквизиты, не меняли порядок полей и не нарушали логику экранных форм, установленную методологами. Основным инструментом для таких манипуляций у пользователя является команда «Изменить форму», доступная в меню «Ещё».

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

Способ 1. Изменение свойств формы в Конфигураторе

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

  1. Откроем Конфигуратор и найдем нужный нам документ (или справочник) в дереве метаданных.
  2. Перейдем на закладку «Формы» и откроем требуемую форму (например, ФормаДокумента).
  3. В окне свойств самой формы (не отдельного элемента, а всей формы целиком) найдем категорию «Использование».
  4. Снимем флаг в свойстве Разрешить пользовательскую настройку формы.

Проанализируем, к чему это приведет. После снятия этого флага команда «Изменить форму» полностью исчезнет из стандартного меню «Ещё» для всех пользователей, независимо от их прав. Однако у этого метода есть существенный минус: конфигурацию придется снимать с поддержки (или включать возможность редактирования), что усложняет дальнейшие обновления программы.

Способ 2. Управление составом команд формы

Если нам нужно не просто запретить настройку, а точечно управлять интерфейсом командной панели, воспользуемся настройкой «Состав команд». Этот метод позволяет скрыть конкретную кнопку, не затрагивая общие правила поведения формы.

Разберем алгоритм действий:

  1. В редакторе формы перейдем на закладку «Командный интерфейс» или в окне элементов формы найдем раздел «Состав команд».
  2. В списке стандартных команд найдем пункт «Изменить форму».
  3. Снимем галочку «Видимость» для этой команды.

Важно понимать, что если в форме используется автозаполнение командной панели, кнопка может появиться снова. В таком случае в свойствах командной панели следует проверить свойство Автозаполнение и при необходимости настроить состав команд вручную.

Способ 3. Ограничение через права доступа (Роли)

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

Проанализируем работу права Сохранение данных пользователя:

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

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

Способ 4. Использование расширений конфигурации

Чтобы не снимать основную конфигурацию КА 2.0 с поддержки, воспользуемся механизмом расширений. Это современный и правильный подход для кастомизации типовых решений.

Рассмотрим, как это сделать:

  1. Создадим новое расширение (или используем существующее).
  2. Добавим в расширение нужную форму документа.
  3. В расширенной форме установим свойство Разрешить пользовательскую настройку формы в значение Ложь.

Иногда при использовании расширений возникает конфликт режима совместимости. Платформа может выдать ошибку при попытке изменить состав команд. В этом случае мы можем прибегнуть к программному коду внутри расширения.

Способ 5. Программное отключение в коде

Посмотрим на пример программного управления интерфейсом. Если свойства формы в редакторе недоступны или не срабатывают из-за особенностей режима совместимости, пропишем запрет в модуле формы. Нам понадобится обработчик события ПриСозданииНаСервере.

Разберем пример кода:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Устанавливаем запрет на изменение состава команд (кнопка Изменить форму)
    ЭтаФорма.РазрешитьИзменениеСоставаКоманд = Ложь;
    
    // Также можно ограничить изменение функциональных опций в форме
    ЭтаФорма.ИзменяемостьСоставаФункциональныхОпций = Ложь;
КонецПроцедуры

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

Способ 6. Очистка кэша пользовательских настроек

Часто бывает так: программист внес изменения, запретил редактирование, но пользователь все равно видит кнопку или старое (ранее настроенное им) расположение полей. Выясним, почему это происходит. Причина кроется в том, что настройки формы уже сохранены в информационной базе в разрезе конкретного пользователя.

Чтобы изменения вступили в силу для существующих пользователей, выполним следующие действия:

  1. Зайдем в раздел Администрирование — Настройки пользователей и прав.
  2. Перейдем по ссылке «Настройки пользователей».
  3. Выберем нужного пользователя и перейдем на закладку «Внешний вид».
  4. Найдем в списке нужную форму документа и нажмем «Очистить».

После этой процедуры форма вернется к тому виду, который задан в конфигураторе (или расширении), а команда «Изменить форму» исчезнет согласно вашим новым правилам.

Резюме

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

← На главную