Почему новая подсистема не отображается в интерфейсе под правами пользователя в 1С

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

При доработке типовых конфигураций (таких как «1С:Управление торговлей», «1С:ERP» или «1С:Комплексная автоматизация») разработчики часто сталкиваются с ситуацией: новая подсистема создана, в нее добавлены объекты, настроена роль, включена видимость в командном интерфейсе. Администратор с полными правами видит новый раздел без нареканий, однако пользователь с ограниченной ролью не видит подсистему вовсе — ее нет даже в окне Настройка панели разделов. Проанализируем, почему возникает такое поведение платформы и как быстро восстановить отображение интерфейса.

Причина 1. Не выполнено обновление вспомогательных данных БСП

В типовых решениях на базе «1С:Библиотеки стандартных подсистем» (БСП) действует специализированная подсистема управления доступом. Платформа и механизмы БСП связывают права пользователей не напрямую с метаданными из конфигуратора, а со специальными справочниками — ИдентификаторыОбъектовМетаданных и ИдентификаторыОбъектовРасширений. Если после добавления новой подсистемы или справочников/документов служебные таблицы не были обновлены, система считает, что у роли нет фактических прав на добавленные элементы, и платформа скрывает раздел.

Разберем три способа обновления вспомогательных данных информационной базы.

Способ А. Запуск с параметром обновления

Это классический способ инициализации процедур обновления БСП без изменения номера версии конфигурации. Выполним следующие шаги:

  1. Откроем Конфигуратор.
  2. Перейдем в главное меню: Сервис — Параметры.
  3. Перейдем на вкладку Запуск 1С:Предприятия и выберем подвкладку Основные.
  4. В поле Параметр запуска введем значение ЗапуститьОбновлениеИнформационнойБазы.
  5. Запустим сеанс «1С:Предприятие» в режиме отладки или по клавише F5. Программа выполнит все отложенные обработчики обновления, зарегистрирует новые метаданные и обновит права доступа.
  6. Вернемся в параметры запуска в конфигураторе и очистим строку параметра, чтобы обновление не запускалось при каждом старте.

Способ Б. Программное обновление идентификаторов через внешнюю обработку

Если нет возможности перезапускать базу под монопольным флагом или требуется быстро актуализировать данные в рабочей базе, выполним процедуру обновления идентификаторов метаданных программно. Для этого в контексте внешней обработки или консоли кода вызовем метод подсистемы БСП:

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные();

Если добавленная подсистема и объекты внедрены не в основную конфигурацию, а через расширение, выполним аналогичный вызов для расширений:

Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанные();

Способ В. Корректное поднятие версии конфигурации

Штатный механизм БСП отслеживает изменения через номер версии. Если увеличить номер версии конфигурации в свойствах корневого узла метаданных и обновить конфигурацию базы данных, процедура обновления вспомогательных таблиц выполнится автоматически при первом входе администратора в систему.

Причина 2. Особенности назначения прав и профилей групп доступа

В конфигурации «1С:Управление торговлей» прямое назначение роли пользователю через конфигуратор не гарантирует корректной работы интерфейса. Механизмы БСП управляют доступом на уровне предприятия. Проверим цепочку назначения прав:

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

При таком подходе типовая подсистема прав рассчитает действующие права с учетом обновленных идентификаторов объектов.

Причина 3. Специфика прав на команды и объекты

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

Проанализируем состав прав на объекты, входящие в подсистему:

  1. Отчеты и обработки. Права Просмотр недостаточно, чтобы команда отчета или обработки появилась в интерфейсе. Для роли обязательно должно быть установлено право Интерактивное открытие или Использование.
  2. Общие команды. Для них требуется явное назначение права Применение.
  3. Регистры сведений. Команда открытия списка регистра отображается только при наличии права Чтение и условии, что регистр не подчинен регистратору (либо у него задана основная форма списка).
  4. Настройка командного интерфейса подсистемы по ролям. В конфигураторе откроем контекстное меню подсистемы и выберем Командный интерфейс. Обратим внимание на колонки: видимость команды настраивается не только общим флагом, но и персонально для каждой роли. Убедимся, что для проверяемой роли флаг видимости команды установлен.

Причина 4. Иерархия подсистем

Если новая подсистема создана как подчиненная, она не появится в главной панели разделов:

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

Причина 5. Пользовательские настройки интерфейса и кэш

Если все права и вспомогательные таблицы настроены верно, причиной невидимости раздела могут быть сохраненные настройки клиента:

  1. Индивидуальная настройка панели разделов. Если пользователь ранее менял порядок разделов через Главное меню — Настройки — Настройка панели разделов, платформа перестает автоматически добавлять новые подсистемы в его интерфейс. Под проблемным пользователем откроем это окно и нажмем кнопку Установить стандартные настройки.
  2. Кэш метаданных тонкого клиента. Закроем сеанс пользователя и запустим клиентское приложение с параметром /ClearCache либо удалим временные файлы из каталогов %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8.
← На главную