Администрирование · 10 мин
1С: как узнать, кому доступна роль
Как в 1С узнать, каким пользователям назначена роль: через конфигуратор, отчёт о правах, запрос и типовые механизмы БСП. Пошаговые инструкции и ограничения.
Вопрос «кому доступна роль» возникает при аудите прав доступа, расследовании инцидентов и перед удалением неиспользуемых ролей из конфигурации. В 1С роль — это набор прав на объекты метаданных, а назначение ролей пользователям выполняется в конфигураторе, в справочнике пользователей информационной базы или через профили групп доступа в типовых конфигурациях на БСП.
Важно понимать: одна и та же роль может попасть к пользователю несколькими путями — напрямую через список ролей в конфигураторе, через профиль группы доступа в режиме предприятия или через внешнюю обработку, изменившую права. Поэтому проверять нужно все каналы, иначе картина будет неполной.
Ниже разобраны основные способы определить, каким пользователям доступна конкретная роль: штатные средства конфигуратора, запросы к данным информационной базы, типовые отчёты БСП и программная проверка. Также описаны ограничения каждого метода и типичные ошибки.
Как устроено назначение ролей в 1С
Роль в 1С — это объект метаданных, который объединяет права на чтение, добавление, изменение, удаление и использование объектов конфигурации: справочников, документов, регистров, отчётов. Пользователь получает права только через назначенные ему роли — прямого назначения прав «на объект» в платформе нет.
При этом в конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, БП, ЗУП) поверх платформенных ролей работает механизм профилей и групп доступа. Пользователю назначается группа доступа, группе — профиль, а профиль уже содержит роли. В результате в конфигураторе у пользователя может стоять только техническая роль «Базовые права», а реальный набор прав он получает через профили.
Из этого следует главное практическое правило: если конфигурация типовая, проверки только в конфигураторе недостаточно. Нужно смотреть и список ролей пользователя, и его группы доступа в режиме предприятия.
Проверка ролей через конфигуратор
Самый прямой способ — открыть список пользователей в конфигураторе: меню «Администрирование» → «Пользователи». Двойной щелчок по пользователю открывает его свойства, где на вкладке «Прочие» перечислены доступные роли с отметками, какие из них назначены.
Для обратной задачи — найти всех, у кого есть конкретная роль, — удобно использовать поиск по списку. Откройте каждого пользователя и проверьте отметку нужной роли, либо выгрузите список пользователей в табличный документ (правый клик по списку → «Вывести список») и проанализируйте его. В больших базах с сотнями пользователей ручной перебор неудобен, поэтому используют программный способ, описанный ниже.
Учтите ограничение: в конфигураторе видны только роли, назначенные на уровне платформы. Группы доступа и профили БСП здесь не отображаются, поэтому пользователь с «пустым» набором ролей может фактически иметь широкие права.
- 1Откройте конфигуратор и перейдите: Администрирование → Пользователи
- 2Откройте свойства пользователя двойным щелчком
- 3Перейдите на вкладку «Прочие» и найдите нужную роль в списке
- 4Отметка рядом с ролью означает, что она назначена этому пользователю
- 5Повторите для остальных пользователей или выгрузите список для анализа
Программная проверка через встроенный язык
Когда пользователей много, удобнее получить список владельцев роли кодом. Платформа предоставляет метод ПользователиИнформационнойБазы.ПолучитьПользователей(), который возвращает всех пользователей ИБ. У каждого объекта есть коллекция Роли, по которой можно проверить наличие нужной роли.
Пример кода, который выводит всех пользователей с ролью «ПолныеПрава»:
НужнаяРоль = Метаданные.Роли.Найти("ПолныеПрава");
Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Если ПользовательИБ.Роли.Содержит(НужнаяРоль) Тогда
Сообщить(ПользовательИБ.Имя + " (" + ПользовательИБ.ПолноеИмя + ")");
КонецЕсли;
КонецЦикла;
Этот код можно выполнить через внешнюю обработку, консоль кода или временную обработку в режиме предприятия. Для выполнения нужны права администратора. Результат покажет только платформенные роли — для полной картины в типовых конфигурациях дополнительно анализируйте регистры и справочники БСП.
Для Каждого П Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Если П.Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда
Сообщить(П.Имя);
КонецЕсли;
КонецЦикла;Проверка в типовых конфигурациях: профили и группы доступа
В конфигурациях на БСП (1С:Бухгалтерия, Управление торговлей, ERP, ЗУП) основной механизм раздачи прав — профили групп доступа. Чтобы узнать, кому доступна роль, откройте раздел «Администрирование» → «Настройки прав и пользователей» → «Профили групп доступа». Найдите профиль, в который входит интересующая роль, и посмотрите, каким группам доступа он назначен и какие пользователи в эти группы входят.
Удобный штатный инструмент — отчёт «Права доступа» (в ряде конфигураций доступен из карточки пользователя или из настроек прав). Он показывает, какие права и через какие профили получил конкретный пользователь, и позволяет ответить на обратный вопрос — кто имеет доступ к конкретному объекту или роли.
Если отчёт недоступен, проверьте вручную: справочник «Профили групп доступа» → отбор по роли → список групп доступа → состав участников. Путь длиннее, но даёт тот же результат без доработок.
Как проверить права конкретного пользователя
Обратная задача — выяснить, есть ли у конкретного пользователя нужная роль. Программно это делается функцией РольДоступна("ИмяРоли"), но она проверяет права только текущего сеанса. Для проверки от имени другого пользователя без запуска сеанса под ним используйте анализ его объекта ПользовательИБ и групп доступа.
Практический приём для администратора: попросить пользователя выполнить проблемное действие и зафиксировать ошибку «Нарушение прав доступа» — в сообщении платформа указывает, какого права и к какому объекту не хватает. По технологическому журналу с событием доступа можно отследить, какая именно проверка прав не прошла.
Для комплексной проверки в типовых решениях используйте отчёт «Права доступа» по конкретному пользователю: он покажет итоговый набор прав с учётом всех профилей и групп, что надёжнее ручного перебора.
Как проверить результат
Отметка роли установлена на вкладке «Прочие»
Роли нет, но пользователь имеет права — проверьте профили БСП
Группа содержит профиль с нужной ролью
Профиль есть, но группа не назначена пользователю
Действие выполняется без ошибок прав
Ошибка «Нарушение прав доступа» — роль фактически недоступна
Типичные ошибки и ограничения
Самая частая ошибка — вывод о правах только по данным конфигуратора. В типовых конфигурациях это даёт искажённую картину: реальные права распределены через профили, и пользователь с «пустым» списком ролей может иметь почти полный доступ.
Вторая ошибка — забыть про роль «ПолныеПрава» и административные роли. Пользователь с полными правами фактически имеет любую роль, поэтому при аудите «кому доступна роль X» такие учётные записи нужно учитывать отдельно: они обходят любые ограничения.
Третья ошибка — не учитывать внешние пользователи и отключённые учётные записи. Пользователь может быть помечен как «недействителен», но роль остаётся назначенной — при повторном включении доступ восстановится автоматически. При аудите безопасности такие записи следует чистить, а не только отключать.
FAQ
Можно ли узнать, кому доступна роль, без прав администратора?
Полный список пользователей и их ролей доступен только при наличии административных прав или права «Администрирование». Обычный пользователь может проверить только свои права — например, попытавшись выполнить действие и посмотрев на ошибку доступа.
Почему в конфигураторе у пользователя нет ролей, но он всё может?
Скорее всего, конфигурация построена на БСП, и права назначены через профили групп доступа в режиме предприятия. Откройте карточку пользователя в программе и посмотрите его группы доступа и профили.
Как найти пользователей с ролью «ПолныеПрава»?
Используйте программный перебор через ПользователиИнформационнойБазы.ПолучитьПользователей() с проверкой Роли.Содержит(Метаданные.Роли.ПолныеПрава), либо вручную откройте каждого пользователя в конфигураторе и проверьте отметку роли.
Что показывает функция РольДоступна()?
Она проверяет, доступна ли указанная роль текущему пользователю сеанса, с учётом всех способов назначения. Проверить права другого пользователя этой функцией нельзя — нужен анализ его объекта ПользовательИБ и групп доступа.
Наследуются ли роли при копировании пользователя?
При создании пользователя копированием в конфигураторе копируются и назначенные роли. В типовых конфигурациях членство в группах доступа копируется не всегда — после копирования проверьте группы доступа нового пользователя вручную.
Как провести аудит: кто имеет доступ к конкретному документу?
Определите, какие роли дают права на этот вид документа (через конфигуратор: свойства роли → права на объект), затем найдите всех владельцев этих ролей и профилей. В типовых конфигурациях быстрее воспользоваться отчётом «Права доступа» с отбором по объекту.
Что важно запомнить
Права в 1С назначаются только через роли, а в типовых конфигурациях — ещё и через профили групп доступа. Для полного ответа на вопрос «кому доступна роль» проверяйте оба уровня: список ролей в конфигураторе или кодом, и группы доступа в режиме предприятия. Не забывайте про владельцев полных прав и отключённые учётные записи.