При доработке типовых конфигураций (таких как 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация) разработчики часто сталкиваются с ситуацией: в конфигураторе создана новая роль, добавлены права на подсистему, справочники и отчеты. Если назначить эту роль пользователю напрямую в списке пользователей конфигуратора, все элементы интерфейса отображаются и работают корректно. Однако при попытке назначить ту же самую роль в режиме 1С:Предприятие через Профиль групп доступа назначение фактически не срабатывает: роль может сниматься, но не добавляется, а объекты не появляются в командном интерфейсе.
Проанализируем причину такого поведения подсистемы прав и разберем по шагам, как заставить новую роль корректно работать через профили и группы доступа.
Выясним причину: как Библиотека стандартных подсистем (БСП) управляет ролями
В конфигурациях на базе БСП прямое назначение ролей пользователям информационной базы в пользовательском режиме не выполняется напрямую. Вместо этого действует многоуровневая подсистема Управление доступом:
Конфигурация хранит список доступных ролей и объектов в служебном справочнике ИдентификаторыОбъектовМетаданных.
Связка ролей с профилями и пользователями кэшируется в служебных регистрах и параметрах работы программы.
Когда мы добавляем новую роль в дерево метаданных конфигуратора, БСП еще «не знает» о ее существовании в служебных таблицах.
При записи пользователя через режим предприятия подсистема сверяет назначенные роли с актуальным кэшем доступа. Если роль отсутствует в служебных идентификаторах, подсистема безопасности удаляет ее как несанкционированную или неучтенную, блокируя добавление.
Способ 1. Запуск 1С:Предприятия с ключом обновления информационной базы
Рассмотрим самый быстрый способ инициализации служебных механизмов без написания дополнительного кода. При запуске базы со специальным ключом командной строки запускаются процедуры обновления служебных данных, включая перечитывание метаданных и актуализацию идентификаторов.
Закроем все сеансы работы с информационной базой.
В окне запуска 1С откроем свойства информационной базы (кнопка Изменить).
В поле Дополнительные параметры запуска укажем параметр: /ЗапуститьОбновлениеИнформационнойБазы
Запустим программу в режиме 1С:Предприятие под пользователем с полными административными правами и дождемся завершения процедур обновления.
После завершения входа закроем программу и удалим указанный ключ из параметров запуска.
Способ 2. Программное обновление идентификаторов и параметров доступа через код
Разберем вариант, когда требуется обновить кэш БСП точечно, например, через внешнюю обработку или консоль кода в режиме предприятия. Для полной синхронизации метаданных и подсистемы доступа выполним следующий программный блок:
// 1. Обновляем служебный справочник идентификаторов метаданных
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Ложь, Ложь);
// 2. Актуализируем общие параметры работы пользователей
Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры();
// 3. Обновляем кэш и таблицы подсистемы управления доступом
УправлениеДоступомСлужебный.ОбновитьДанныеУправленияДоступом();
После выполнения этого кода метаданные роли будут зарегистрированы в служебных таблицах, и назначение роли через профиль групп доступа начнет работать штатно.
Способ 3. Корректный порядок применения профиля после обновления
Рассмотрим последовательность действий в интерфейсе программы после того, как идентификаторы были обновлены:
Откроем Администрирование → Настройки пользователей и прав → Профили групп доступа.
Если профиль с новой ролью уже был создан ранее, снимем флаг с созданной роли, запишем профиль, затем снова установим флаг роли и повторно нажмем Записать и закрыть (это принудительно запустит фоновое обновление прав для всех участников связанных групп).
Откроем форму пользователя и убедимся, что он включен в соответствующую Группу доступа.
Перезайдем в программу под целевым пользователем.
Дополнительные факторы, влияющие на видимость объектов
Если после успешного назначения роли отчет или справочник все еще не отображаются в подсистеме, проверим следующие настройки:
Наличие базовых ролей: для корректной работы командного интерфейса пользователю обязательно должны быть назначены базовые роли конфигурации (например, БазовыеПрава, БазовыеПраваУТ, ЗапускТонкогоКлиента). Без них вывод команд подсистем в интерфейс блокируется.
Функциональные опции: если добавляемый справочник или отчет привязан к определенной функциональной опции, убедимся, что эта опция включена в настройках программы (НСИ и администрирование). Если опция отключена, объект скрывается независимо от прав роли.
Пользовательские настройки интерфейса: если пользователь ранее редактировал командную панель или панель навигации подсистемы вручную, новые объекты автоматически не добавятся. В этом случае в режиме предприятия в меню подсистемы откроем Настройка панели навигации (или Настройка панели действий) и нажмем Установить стандартные настройки.