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