В процессе администрирования систем на базе 1С:Предприятие 8.3 специалисты часто сталкиваются с ситуацией, когда пользователю назначаются полные права (или специализированная роль), но заветный пункт меню «Функции для технического специалиста» (ранее известный как «Все функции») так и не появляется. Особенно часто это проявляется в клиент-серверных вариантах работы и при создании копий баз данных. Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам методы её решения.
Прежде чем переходить к активным действиям, проанализируем ситуацию. В современных конфигурациях, таких как 1С:Комплексная автоматизация 2 или 1С:ERP, управление доступом осуществляется через механизм Профилей групп доступа. За доступ к техническому режиму отвечает конкретное право — РежимТехническогоСпециалиста.
Как правило, это право включено в типовые роли ПолныеПрава или АдминистраторСистемы. Однако, даже если в Группе доступа пользователя числится профиль «Администратор», интерфейс может не обновиться. Это происходит из-за сложной системы кэширования прав в платформе 8.3 и особенностей хранения пользовательских настроек в системных таблицах базы данных.
Рассмотрим наиболее эффективный метод, который помогает в тех случаях, когда «залипают» серверные сессии или кэш метаданных. Этот способ позволяет инициировать процедуру пересчета прав для всех пользователей системы.
Режим «Все функции» (или Режим технического специалиста) — и установим галочку вручную, в обход настроек в режиме «Предприятие».Важный нюанс: как показывает практика, выполнение этого действия даже для одного пользователя часто заставляет сервер приложений 1С обновить таблицу прав _UserRights. После этого режим может появиться у всей группы пользователей. Позже эту «ручную» галочку в Конфигураторе можно снять — если право назначено через Профиль групп доступа в режиме «Предприятие», оно продолжит действовать корректно.
Иногда причина кроется не в самих правах, а в сохраненном состоянии интерфейса. Параметр видимости команды технического специалиста может быть записан в Хранилище системных настроек со значением Ложь. Проанализируем, как очистить эти данные.
В пользовательском режиме (под правами администратора) выполним следующие действия:
После удаления этой настройки пользователю необходимо перезайти в систему. При новом входе платформа создаст чистый объект настроек, исходя из актуальных прав доступа.
Выясним причину, по которой пункт меню может быть просто скрыт в настройках самого пользователя, даже если права позволяют его видеть. Проверим наличие возможности включения режима вручную:
РежимТехническогоСпециалиста или Администрирование. В этом случае может помочь анализ прав доступа к метаданным или возврат к Решению 1.Если манипуляции с Конфигуратором не помогли, проанализируем состояние серверного кэша. В версиях платформы 8.3.23 и выше данные о сеансах могут кэшироваться в папке snccntxt. Рассмотрим алгоритм радикальной очистки:
C:\Program Files\1cv8\srvinfo).snccntxt и reg_1541 (внимание: удаление папки регистрации кластера приведет к необходимости заново добавлять базы в консоли администрирования, делайте это осторожно!).snccntxt.Этот метод заставляет систему полностью переинициализировать параметры безопасности для всех активных соединений.
Для понимания того, как работает проверка прав «под капотом» и проводится анализ прав доступа на объект, приведем пример логики, которую использует платформа (условно):
// Пример проверки доступности режима технического специалиста
Если ПравоДоступа("РежимТехническогоСпециалиста", Метаданные) Тогда
// Если право есть в ролях, проверяем системную настройку
ПараметрыИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/ПараметрыИнтерфейса");
Если ПараметрыИнтерфейса.ОтображатьКомандуТехническогоСпециалиста Тогда
УстановитьВидимостьМеню(Истина);
КонецЕсли;
КонецЕсли;
Как видим из этого примера, для появления меню должны совпасть два фактора: наличие права в роли и флаг в системных настройках. Если база является копией, созданной через SQL-бэкап, настройки из SystemSettings переносятся «как есть», и если в рабочей базе у пользователя не было этого режима, в копии он может не появиться автоматически даже после смены ролей.
Резюме: Если вы столкнулись с отсутствием режима «Все функции», первым делом попробуйте «дернуть» флаг права в Конфигураторе для одного пользователя. Это самый быстрый и часто помогающий способ «протолкнуть» права в кэш сервера без перезагрузки всей системы.