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