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