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