При доработке типовых конфигураций (таких как «1С:Управление торговлей», «1С:ERP» или «1С:Комплексная автоматизация») разработчики часто сталкиваются с ситуацией: новая подсистема создана, в нее добавлены объекты, настроена роль, включена видимость в командном интерфейсе. Администратор с полными правами видит новый раздел без нареканий, однако пользователь с ограниченной ролью не видит подсистему вовсе — ее нет даже в окне Настройка панели разделов. Проанализируем, почему возникает такое поведение платформы и как быстро восстановить отображение интерфейса.
В типовых решениях на базе «1С:Библиотеки стандартных подсистем» (БСП) действует специализированная подсистема управления доступом. Платформа и механизмы БСП связывают права пользователей не напрямую с метаданными из конфигуратора, а со специальными справочниками — ИдентификаторыОбъектовМетаданных и ИдентификаторыОбъектовРасширений. Если после добавления новой подсистемы или справочников/документов служебные таблицы не были обновлены, система считает, что у роли нет фактических прав на добавленные элементы, и платформа скрывает раздел.
Разберем три способа обновления вспомогательных данных информационной базы.
Способ А. Запуск с параметром обновления
Это классический способ инициализации процедур обновления БСП без изменения номера версии конфигурации. Выполним следующие шаги:
ЗапуститьОбновлениеИнформационнойБазы.F5. Программа выполнит все отложенные обработчики обновления, зарегистрирует новые метаданные и обновит права доступа.Способ Б. Программное обновление идентификаторов через внешнюю обработку
Если нет возможности перезапускать базу под монопольным флагом или требуется быстро актуализировать данные в рабочей базе, выполним процедуру обновления идентификаторов метаданных программно. Для этого в контексте внешней обработки или консоли кода вызовем метод подсистемы БСП:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные();
Если добавленная подсистема и объекты внедрены не в основную конфигурацию, а через расширение, выполним аналогичный вызов для расширений:
Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанные();
Способ В. Корректное поднятие версии конфигурации
Штатный механизм БСП отслеживает изменения через номер версии. Если увеличить номер версии конфигурации в свойствах корневого узла метаданных и обновить конфигурацию базы данных, процедура обновления вспомогательных таблиц выполнится автоматически при первом входе администратора в систему.
В конфигурации «1С:Управление торговлей» прямое назначение роли пользователю через конфигуратор не гарантирует корректной работы интерфейса. Механизмы БСП управляют доступом на уровне предприятия. Проверим цепочку назначения прав:
При таком подходе типовая подсистема прав рассчитает действующие права с учетом обновленных идентификаторов объектов.
Платформа 1С скрывает подсистему целиком, если в ней нет ни одной доступной пользователю команды в панели навигации или панели действий. Даже если у роли есть право Просмотр на подсистему, раздел не отобразится при отсутствии видимых команд.
Проанализируем состав прав на объекты, входящие в подсистему:
Просмотр недостаточно, чтобы команда отчета или обработки появилась в интерфейсе. Для роли обязательно должно быть установлено право Интерактивное открытие или Использование.Применение.Чтение и условии, что регистр не подчинен регистратору (либо у него задана основная форма списка).Если новая подсистема создана как подчиненная, она не появится в главной панели разделов:
Просмотр на каждую родительскую подсистему.Если все права и вспомогательные таблицы настроены верно, причиной невидимости раздела могут быть сохраненные настройки клиента:
/ClearCache либо удалим временные файлы из каталогов %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8.