Какие права у сотрудника в 1С и откуда они взялись
Содержание
Быстрее всего роль пользователя 1С узнать в Конфигураторе: Администрирование → Пользователи, откройте нужного человека и перейдите на закладку «Прочие» — там галочками отмечены все роли, которые у него реально есть. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) то же самое смотрят без Конфигуратора: Администрирование → Настройки пользователей и прав → Пользователи, карточка сотрудника, ссылка «Права доступа
».
Способы отвечают на разные вопросы. Карточка пользователя показывает группы доступа и профили — то, как права задумал администратор. Конфигуратор показывает итоговый набор ролей платформы. Код и запрос нужны, когда пользователей десятки и проверять каждого вручную долго. Если картины расходятся, это уже повод для диагностики.
Из чего складываются права пользователя в 1С
В платформе 1С:Предприятие 8.3 права выдаются только через роли. Роль — объект конфигурации: набор разрешений на чтение, добавление, изменение, проведение, удаление и интерактивные действия по каждому справочнику, документу, отчёту и регистру. Своих «индивидуальных галочек» у пользователя нет — только перечень ролей.
Типовые конфигурации строят над ролями ещё два уровня из Библиотеки стандартных подсистем (БСП):
- 🧩 Профиль групп доступа — готовый набор ролей под должность: «Бухгалтер», «Администратор» и т. п.
- 👥 Группа доступа — профиль плюс список участников и, при необходимости, ограничения по данным (например, только одна организация).
- 👤 Пользователь — входит в одну или несколько групп доступа; его роли — это объединение ролей всех профилей этих групп.
Цепочка выглядит так: пользователь → группы доступа → профили → роли → пользователь информационной базы. Последнее звено — служебная учётная запись платформы. Именно ей БСП записывает итоговый список ролей, когда вы сохраняете группу доступа или профиль.
Права складываются, а не вычитаются. Если человек состоит в двух группах, у него роли обеих. «Запрещающих» ролей в 1С нет, поэтому лишнее право убирают только исключением человека из группы или правкой профиля.
Отдельно стоят ограничения на уровне записей (RLS). Роль может разрешать чтение документов «Реализация», а ограничение по организациям — скрывать часть из них. Тогда роль у пользователя есть, но данных он не видит.
Как посмотреть роли пользователя в режиме 1С:Предприятие
Этот способ подходит бухгалтеру-администратору без доступа к Конфигуратору. Нужна роль с правом администрирования пользователей, обычно профиль «Администратор».
Через карточку пользователя
- Откройте
Администрирование → Настройки пользователей и прав. - Нажмите «Пользователи» и найдите сотрудника в списке.
- Откройте карточку и перейдите по ссылке «Права доступа» на панели навигации карточки.
- В списке видно, в каких группах доступа состоит человек и какой профиль у каждой группы.
В этой же форме есть команда отчёта по правам доступа. Отчёт показывает, какие объекты пользователь может читать и изменять, и через какие группы он получил это право. Для ответа на вопрос «почему Петрова видит зарплатные документы» это самый короткий путь.
Через профили групп доступа
Если нужно понять, какие роли входят в профиль, откройте Администрирование → Настройки пользователей и прав → Профили групп доступа. В карточке профиля есть список ролей с галочками. Включите отбор «только выбранные», иначе список длинный.
Поставляемые профили (с отметкой о поставке в составе конфигурации) менять нельзя. Чтобы собрать свой вариант, скопируйте профиль и правьте копию.
Через группы доступа
Администрирование → Настройки пользователей и прав → Группы доступа показывает обратную картину: кто входит в каждую группу. Откройте группу, на закладке участников увидите пользователей и группы пользователей. Учтите: если в участниках стоит группа пользователей («Бухгалтерия»), то все её члены получают права, хотя поимённо их в списке нет.
Проверка ролей в Конфигураторе
Конфигуратор показывает то, что реально применяет платформа, без слоя БСП. Это нужно, когда интерфейс 1С недоступен, конфигурация нетиповая или подозрение, что роли «разъехались».
Роли конкретного пользователя
- Запустите базу в режиме Конфигуратор под пользователем с ролью полных прав.
- Меню
Администрирование → Пользователи. - Двойной щелчок по нужному имени.
- Закладка «Основные» — имя, аутентификация, признак «Показывать в списке выбора».
- Закладка «Прочие» — перечень ролей с галочками, основной интерфейс, язык, режим запуска.
Список ролей здесь полный, включая служебные: «Базовые права», «Запуск тонкого клиента », «Запуск веб-клиента» и прочие. Отсутствие роли запуска клиента — частая причина того, что пользователь не может войти в базу нужным клиентом.
Не правьте роли в Конфигураторе вручную, если в базе работает БСП. При следующем сохранении профиля или группы доступа программа перезапишет список ролей по своим данным, и ручная правка пропадёт. Хуже, если она не пропадёт сразу, и через месяц никто не вспомнит, откуда у кладовщика полные права.
Что разрешает сама роль
Чтобы понять, что конкретно даёт роль, раскройте в дереве конфигурации Общие → Роли и откройте её. Слева — дерево объектов, справа — права на выбранный объект: «Чтение», «Добавление», «Изменение», «Удаление», «Проведение», «Просмотр», «Интерактивное удаление» и другие. Если у права заполнено ограничение доступа к данным, его текст виден внизу формы.
| Что проверяете | Где смотреть | Что увидите |
|---|---|---|
| Роли одного пользователя | Администрирование → Пользователи → «Прочие» | Итоговый список ролей |
| Права роли на объект | Общие → Роли → роль → объект | Галочки прав и ограничения |
| Наличие полных прав | Роль «Полные права» у пользователя | Отметка в списке ролей |
Как проверить роль пользователя программно
Когда пользователей больше 20–30, кликать по каждому долго. Встроенный язык даёт короткие способы. Код ниже выполняйте во внешней обработке или в режиме отладки под пользователем с полными правами.
Роли текущего пользователя
Функция РольДоступна() проверяет одну роль у текущего сеанса:
Если РольДоступна("ПолныеПрава") Тогда
Сообщить("У текущего пользователя есть полные права");
КонецЕсли;
В конфигурациях на БСП удобнее общий модуль Пользователи: Пользователи.ЭтоПолноправныйПользователь() и Пользователи.РолиДоступны("ИмяРоли1,ИмяРоли2"). Они учитывают разделение данных и привилегированный режим.
Роли всех пользователей базы
Этот фрагмент выводит каждого пользователя информационной базы и его роли:
Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
СписокРолей = Новый Массив;
Для Каждого Роль Из ПользовательИБ.Роли Цикл
СписокРолей.Добавить(Роль.Синоним);
КонецЦикла;
Сообщить(ПользовательИБ.Имя + ": " + СтрСоединить(СписокРолей, ", "));
КонецЦикла;
Для одного человека используйте ПользователиИнформационнойБазы.НайтиПоИмени("Иванов") и проверку ПользовательИБ.Роли.Содержит(Метаданные.Роли.ПолныеПрава). Метод НайтиПоИмени возвращает Неопределено, если такого имени нет, — проверьте это до обращения к ролям.
Запрос к данным БСП: кто через какие группы получил роли
Список пользователей платформы хранится в служебной таблице v8users, а роли в ней лежат в двоичном виде. Читать её запросом из 1С нельзя, а SQL-средствами — бессмысленно и опасно. Никогда не правьте служебные таблицы базы напрямую через SQL — так легко потерять всех пользователей.
Зато настройки БСП — обычные справочники, и их читают запросом в консоли запросов:
ВЫБРАТЬ РАЗЛИЧНЫЕ
ГруппыДоступаПользователи.Ссылка.Наименование КАК ГруппаДоступа,
ГруппыДоступаПользователи.Ссылка.Профиль.Наименование КАК Профиль,
РолиПрофиля.Роль.Наименование КАК Роль
ИЗ
Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофиля
ПО ГруппыДоступаПользователи.Ссылка.Профиль = РолиПрофиля.Ссылка
ГДЕ
ГруппыДоступаПользователи.Пользователь = &Пользователь
И НЕ ГруппыДоступаПользователи.Ссылка.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
ГруппаДоступа,
Роль
В параметр &Пользователь передайте элемент справочника «Пользователи». Запрос покажет только прямое участие. Если человек входит в группу доступа через группу пользователей, её состав смотрите в регистре сведений «Составы групп пользователей» (РегистрСведений.СоставыГруппПользователей) и подставляйте группу вместо пользователя.
Запрос показывает, какие роли должны быть у пользователя по настройкам. Фактический набор ролей — у пользователя ИБ (Конфигуратор или код выше). Сравнение двух списков сразу выявляет ручные правки и сбои.
Связь профилей, групп и ролей: сводная таблица
Чаще всего путаница возникает из-за того, что в разных местах программы видны разные уровни одной цепочки.
| Уровень | Где хранится | Кто меняет | Где посмотреть |
|---|---|---|---|
| Роль | Конфигурация (метаданные) | Разработчик | Конфигуратор, Общие → Роли |
| Профиль групп доступа | Справочник «Профили групп доступа» | Администратор | Настройки пользователей и прав → Профили групп доступа |
| Группа доступа | Справочник «Группы доступа» | Администратор | Настройки пользователей и прав → Группы доступа |
| Пользователь | Справочник «Пользователи» | Администратор | Настройки пользователей и прав → Пользователи |
| Пользователь ИБ | Служебные данные платформы | БСП автоматически | Конфигуратор, Администрирование → Пользователи |
Практическое следствие простое. Права меняют на уровне группы доступа или профиля, а смотрят итог — у пользователя ИБ. В типовых конфигурациях роль «Полные права» входит в профиль «Администратор». Выдавать её «на время» бухгалтеру — плохая идея: временное в 1С обычно становится постоянным.
Почему у пользователя не хватает прав: диагностика
Типичные сообщения, с которыми приходят к администратору: Нарушение прав доступа!, Недостаточно прав для просмотра, Недостаточно прав на ... с указанием объекта. Порядок проверки — от простого к сложному.
- Посмотрите, под кем вошёл человек. Нередко сотрудник запускает базу под чужим именем из сохранённого списка выбора.
- Проверьте группы доступа в карточке пользователя. Есть ли нужный профиль?
- Сравните с ролями в Конфигураторе. Если в профиле роль есть, а у пользователя ИБ её нет, откройте группу доступа и сохраните её заново — БСП перезапишет роли.
- Проверьте ограничения по данным. В группе доступа на закладке ограничений могут быть разрешены не все организации или склады.
- Откройте журнал регистрации (
Администрирование → Обслуживание → Журнал регистрации) и отберите события по пользователю за время ошибки. Платформа фиксирует отказы в доступе с указанием объекта. - Пусть пользователь перезайдёт. Новые роли применяются к новому сеансу, в открытом сеансе они не появятся.
Проверка под тестовым пользователем
Самый надёжный способ увидеть права чужими глазами — войти так, как входит сотрудник. Пароль коллеги для этого узнавать не нужно.
- Создайте пользователя, например «Тест_Склад», с паролем, который знаете только вы.
- Включите его в те же группы доступа, что и проверяемого сотрудника.
- Запустите второй сеанс под тестовым пользователем и повторите действие, на котором была ошибка.
- После проверки отключите тестовому пользователю вход в программу или пометьте его на удаление.
Этот способ занимает лицензию на время второго сеанса. Зато он показывает и роли, и ограничения на уровне записей, и состав меню — то, что не видно ни в отчёте, ни в Конфигураторе.
Не копируйте тестовому пользователю группы «на всякий случай» и не оставляйте его активным. Учётная запись с известным паролем и правами бухгалтера — лишняя дыра в базе.
Отдельный случай — внешние пользователи (контрагенты, работающие через веб-клиент). Их права настраиваются своими группами доступа и профилями для внешних пользователей. Порядок проверки тот же, только начинать нужно со списка внешних пользователей в том же разделе настроек.
Если после смены прав данные всё равно не видны, а ограничение на уровне записей включено, программа может ещё обновлять доступ в фоне. На больших базах это занимает время — проверьте через несколько минут, прежде чем менять настройки повторно.
Частые вопросы
Как узнать свою роль, если я не администратор?
Можно ли узнать роли, если в базе нет ни одного пользователя?
Почему в Конфигураторе ролей больше, чем в профиле?
Как выгрузить список пользователей с ролями в таблицу?
ПользователиИнформационнойБазы.ПолучитьПользователей() и вместо Сообщить пишите строки в таблицу значений. Затем сохраните её в табличный документ.