Какие роли назначены пользователю 1С 8.3 и как выгрузить их перечень для аудита

· 9 мин

Содержание

Быстрее всего список ролей пользователя виден в Конфигураторе: Администрирование → Пользователи, откройте пользователя, вкладка «Прочие» — отмеченные флажками роли и есть его набор. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) роли выдаются через группы доступа, поэтому смотреть их удобнее в пользовательском режиме, а для массовой выгрузки — запросом или кодом.

Способ зависит от задачи. Нужно понять, почему у бухгалтера не открывается документ, — хватит карточки. Нужен аудит прав по всей базе — пишите обработку. Ниже четыре способа, от простого к техническому, и разбор ситуаций, когда роль есть, а доступа нет.

Подготовка: какие права нужны для просмотра ролей

Чужие роли видит только администратор. Без права «Администрирование» список пользователей в Конфигураторе не откроется, а код с ПользователиИнформационнойБазы.ПолучитьПользователей() упадёт с ошибкой нарушения прав.

Перед началом проверьте три вещи:

  • 🔑 у вас роль «Полные права» (в конфигурациях на БСП) или роль с правом «Администрирование»;
  • 🖥️ вы знаете, как устроена база: на БСП или нет. Признак БСП — раздел Администрирование → Настройки пользователей и прав в программе;
  • 👤 у вас есть точное имя пользователя для входа, а не только ФИО. Код ищет пользователя именно по имени для входа.

Если список пользователей в базе пуст, в неё входят без авторизации, и для такого входа доступны все роли. Это частая причина «у всех полные права» в небольших файловых базах.

Способ 1. Роли пользователя через интерфейс администрирования

В конфигурациях на БСП роли напрямую никто не назначает. Схема такая: профиль групп доступа содержит набор ролей, группа доступа связывает профиль с пользователями. Итоговый список ролей пользователя — объединение ролей всех профилей, в группы которых он входит.

Порядок просмотра:

  1. Откройте Администрирование → Настройки пользователей и прав → Пользователи.
  2. Откройте карточку нужного сотрудника.
  3. Перейдите по ссылке «Права доступа » в командной панели карточки. Откроется список групп доступа, в которые он включён, и профиль каждой группы.
  4. Откройте профиль: на его вкладке с ролями видно, какие роли он даёт. Для удобства включите показ только выбранных ролей.
  5. Повторите для каждого профиля из списка и сложите наборы.

Пользователь может попасть в группу доступа не лично, а через группу пользователей (например, «Бухгалтерия»). Тогда в списке групп доступа он всё равно появится, но редактировать участие надо в группе пользователей.

Для сводной картины в БСП есть отчёты по правам доступа. Их ищите в том же разделе Настройки пользователей и прав или в карточке пользователя, в подменю отчётов. Отчёт показывает, какие объекты пользователь может читать и изменять, и через какие группы доступа пришло каждое право. Набор отчётов зависит от версии БСП в вашем релизе.

Способ 2. Список ролей в режиме Конфигуратора

Этот способ показывает фактические роли, записанные в пользователя информационной базы. Он работает в любой конфигурации, включая самописные.

  1. Запустите Конфигуратор под администратором.
  2. Откройте Администрирование → Пользователи.
  3. Дважды щёлкните по пользователю.
  4. На вкладке «Прочие» отмечены доступные ему роли и указан основной интерфейс.

Конфигуратор не умеет выгрузить роли всех пользователей одной таблицей. Для пяти пользователей это терпимо, для пятидесяти — нет: переходите к способу 4.

В базе на БСП не правьте роли в Конфигураторе вручную. Программа пересчитывает роли по профилям групп доступа: при изменении группы доступа, при обновлении конфигурации, при проверке прав. Ручная галочка пропадёт, и вы получите расхождение, которое потом трудно объяснить.

Обратная задача: кто получил конкретную роль

В дереве метаданных Конфигуратора щёлкните правой кнопкой по ветке «Роли» и выберите «Все роли». Откроется матрица «роль × объект» с правами. Это главный инструмент, когда вопрос звучит не «что может Иванова», а «кто может удалить документ».

Способ 3. Запрос к группам и профилям доступа через консоль

Сами роли пользователя информационной базы в таблицах не хранятся, запросом их не получить. Но в конфигурациях на БСП хранится то, из чего роли вычисляются: группы доступа, их участники и профили. Этого хватает для отчёта.

Откройте консоль запросов (внешняя обработка, запускать под администратором) и выполните:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа,
    ГруппыДоступаПользователи.Ссылка.Профиль КАК Профиль,
    ПрофилиРоли.Роль.Синоним КАК Роль,
    ПрофилиРоли.Роль.ПолноеИмя КАК ИмяВМетаданных
ИЗ
    Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиРоли
        ПО ГруппыДоступаПользователи.Ссылка.Профиль = ПрофилиРоли.Ссылка
ГДЕ
    ГруппыДоступаПользователи.Пользователь = &Пользователь
    И НЕ ГруппыДоступаПользователи.Ссылка.ПометкаУдаления
    И НЕ ГруппыДоступаПользователи.Ссылка.Профиль.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
    Роль

Параметр &Пользователь — элемент справочника «Пользователи». Роль в табличной части профиля — ссылка на справочник «Идентификаторы объектов метаданных», поэтому синоним и полное имя берутся через точку.

Ограничение запроса: он видит только прямое участие. Если сотрудник входит в группу доступа через группу пользователей, в поле Пользователь стоит группа, а не он. Добавьте второй запрос с параметром-группой или замените условие на В (&СписокПользователейИГрупп).

Запрос показывает, какие роли должны быть у пользователя по настройкам. Способ 4 показывает, какие роли реально записаны. Разница между ними — первый признак ручных правок в Конфигураторе.

Способ 4. Программное получение ролей пользователя в коде

Для разовой проверки одного пользователя достаточно серверной процедуры во внешней обработке:

&НаСервере
Процедура ВывестиРолиПользователяНаСервере(ИмяДляВхода)

    ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяДляВхода);
    Если ПользовательИБ = Неопределено Тогда
        Сообщить("Пользователь " + ИмяДляВхода + " не найден");
        Возврат;
    КонецЕсли;

    Для Каждого Роль Из ПользовательИБ.Роли Цикл
        Сообщить(Роль.Имя + " — " + Роль.Синоним);
    КонецЦикла;

КонецПроцедуры

ПользовательИБ.Роли — коллекция объектов метаданных. У каждого элемента есть Имя (техническое) и Синоним (как роль видна людям).

Выгрузка ролей всех пользователей в файл

Для аудита нужна таблица «пользователь — роль». Пример пишет её в CSV на сервере:

&НаСервере
Процедура ВыгрузитьРолиВсехНаСервере(ИмяФайла)

    Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
    Запись.ЗаписатьСтроку("Пользователь;ПолноеИмя;Роль;Синоним");

    Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
        Для Каждого Роль Из ПользовательИБ.Роли Цикл
            Запись.ЗаписатьСтроку(ПользовательИБ.Имя + ";"
                + ПользовательИБ.ПолноеИмя + ";"
                + Роль.Имя + ";" + Роль.Синоним);
        КонецЦикла;
    КонецЦикла;

    Запись.Закрыть();

КонецПроцедуры

В клиент-серверной базе файл появится на компьютере сервера 1С, а не у вас. Путь указывайте в каталог, куда у пользователя службы есть права на запись, например C:\Temp\roles.csv. Если на ваших ролях есть точка с запятой в синонимах, смените разделитель.

Проверка без перебора: РольДоступна и ПравоДоступа

ФункцияЧто проверяетДля кого
РольДоступна("ИмяРоли")есть ли рольтолько текущий пользователь
ПравоДоступа("Чтение", Метаданные.Справочники.Контрагенты)есть ли право на объекттекущий пользователь
ПравоДоступа("Изменение", Метаданные.Документы.РеализацияТоваровУслуг, ПользовательИБ)право другого пользователянужен администратор

Третий параметр ПравоДоступа принимает пользователя ИБ или объект метаданных «Роль». Так можно спросить и «есть ли у этой роли право на документ».

Таблица соответствия объектов и прав

Когда роли получены, следующий вопрос — что они разрешают. Основные права, которые встречаются при аудите:

ПравоЧто даёт на практикеНа что смотреть
Чтениеданные доступны запросам и отчётамбез него объект не виден даже в отчётах
Просмотроткрытие формы списка и элементабывает Чтение без Просмотра: данные в отчёте есть, открыть нельзя
Добавление / Изменениесоздание и записьИзменение без Добавления — правка только существующих
Проведение / Отмена проведениядля документовотдельно от Изменения
Интерактивное удалениеудаление сразу, без пометкиу рядовых пользователей быть не должно
Интерактивная пометка удаленияобычная пометканорма для операторов
Администрированиеуправление пользователями, обновлениетолько у администраторов

Матрицу по конкретной роли открывайте в Конфигураторе: двойной щелчок по роли в ветке «Роли», слева дерево объектов, справа флажки прав. Для одного объекта по всем ролям удобнее «Все роли».

Исключения и ограничения: когда роль есть, а доступа нет

Роль в списке — не гарантия, что пользователь увидит данные. Проверяйте четыре механизма.

1. Ограничение доступа на уровне записей (RLS). Право Чтения на справочник может быть дано с условием: только «свои» организации или склады. В БСП это задают в группе доступа, на вкладке ограничений по видам доступа. ПравоДоступа в таком случае вернёт Истина: функция отвечает, есть ли право хотя бы частично, а не на конкретную запись.

2. Свойства самой роли. В палитре свойств роли есть флажки «Устанавливать права для новых объектов», «Устанавливать права для реквизитов и табличных частей по умолчанию» и «Независимые права подчиненных объектов». Из-за них новый объект после обновления может оказаться недоступен, хотя «роль та же».

3. Права на реквизиты. Право можно снять с отдельного реквизита. Документ открывается, а поле «Сумма» пустое или недоступно.

4. Функциональные опции и состояние пользователя. Выключенная опция прячет раздел у всех, включая администратора. А флажок «Вход в программу разрешен» в карточке БСП не трогает роли, но не пустит человека вообще.

Диагностика: выберите симптом

Частые ошибки при назначении прав

  • ❌ Роль «Полные права» вместо настройки профиля. Быстро, но пользователь получает интерактивное удаление и администрирование. Аудит такую выдачу всегда отмечает.
  • ❌ Изменение поставляемого профиля. При обновлении конфигурации поставляемые профили обновляются, ваши правки могут быть потеряны. Скопируйте профиль и меняйте копию.
  • ❌ Пользователь в двух группах с разными ограничениями. Права складываются: если одна группа разрешает все организации, ограничение второй группы ничего не даст.
  • ❌ Правка ролей в Конфигураторе в базе на БСП. Подробно — во втором способе: галочка исчезнет при ближайшем пересчёте.
  • ❌ Уволенный сотрудник с активными ролями. Снимите флажок входа и исключите его из групп доступа, а не только смените пароль.

Итоговые рекомендации по аудиту ролей

Аудит удобно проводить по расписанию, например раз в квартал, и после каждого обновления конфигурации.

Аудит ролей пользователей 1С
Выполнено: 0 / 7

Начинайте с пользователей с правом «Администрирование»: их должно быть два-три на базу, не больше. Затем смотрите интерактивное удаление и доступ к зарплатным данным — это самые чувствительные права.

Сохраняйте выгрузки предыдущих проверок. Сравнение двух CSV в Excel за минуту показывает, кто и какие права получил за квартал. Это проще, чем восстанавливать историю по журналу регистрации.

Можно ли получить роли пользователя без прав администратора?
Только свои. Функция РольДоступна работает для текущего пользователя. Список чужих ролей требует права «Администрирование».
Чем роль отличается от профиля групп доступа?
Роль — объект конфигурации с набором прав, её меняет только разработчик. Профиль — элемент справочника в базе на БСП, набор ролей, который настраивает администратор без Конфигуратора.
Почему в Конфигураторе у пользователя больше ролей, чем в профиле?
Чаще всего роли добавили вручную или пользователь входит ещё в одну группу доступа через группу пользователей. Проверьте оба варианта.
Как узнать роли пользователя в базе в 1С:Фреш или в облаке?
Конфигуратора там нет. Смотрите карточку пользователя и группы доступа в разделе администрирования, это тот же механизм БСП.
Где посмотреть, кто и когда менял права?
В журнале регистрации: отберите события изменения пользователей информационной базы и записи справочника групп доступа.