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