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