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