Не удаётся исключить пользователя из группы доступа: он включён косвенно
Содержание
Пользователя нельзя исключить из группы доступа напрямую, потому что он включён в неё косвенно — не сам по себе, а через группу пользователей, которая входит в эту группу доступа. Убрать его из состава самой группы доступа 1С не даёт: сначала нужно вычистить его из той группы пользователей либо убрать саму группу пользователей из группы доступа.
Полный текст, который выдаёт 1С 8.3:
Невозможно исключить пользователя из группы доступа, так как он включён в неё косвенно.
Ниже — как за пару минут найти виновную группу пользователей и корректно исключить сотрудника, не сломав права остальным.
Почему пользователь оказался в группе доступа косвенно
В типовых конфигурациях на БСП (Бухгалтерия, ЗУП, ERP, УТ и др.) состав группы доступа задаётся двумя способами:
- 🧍 прямо — в группу доступа добавлен конкретный пользователь;
- 👥 косвенно — в группу доступа добавлена целая группа пользователей, а сотрудник состоит в этой группе пользователей.
Когда сотрудник попал в группу доступа вторым способом, строки лично с ним в составе группы доступа нет. Убирать нечего — отсюда и запрет на исключение.
Группа доступа и группа пользователей — разные справочники. Первая раздаёт права (через профиль), вторая просто объединяет людей в набор. Их часто путают, и именно на стыке возникает эта ошибка.
Прямое и косвенное вхождение: в чём разница
| Прямое вхождение | Косвенное вхождение | |
|---|---|---|
| Что в составе группы доступа | сам пользователь | группа пользователей |
| Видно строку с ФИО | да | нет |
| Как исключить | удалить строку | убрать из группы пользователей |
| Ошибка при удалении | нет | …включён в неё косвенно |
Как найти, через какую группу пользователь попал в группу доступа
Прежде чем что-то удалять, нужно понять источник. Действуйте по шагам.
Администрирование → Настройки пользователей и прав → Группы доступа. Откройте ту группу, из которой не получается исключить сотрудника.Участники (или Пользователи) вы увидите строки. Если среди них нет ФИО сотрудника, но есть строка с иконкой группы (👥) — он входит именно через неё.Все пользователи), которая привязана к группе доступа по умолчанию. Такой случай разбираем отдельно ниже.Как исключить пользователя из группы доступа
Способ зависит от того, что вы хотите получить: убрать одного человека или отвязать всю группу.
Способ 1. Убрать сотрудника из группы пользователей
Подходит, когда лишний доступ только у одного человека.
- Откройте
Администрирование→Группы пользователей. - Зайдите в ту группу пользователей, что нашли на предыдущем шаге.
- В составе удалите строку с сотрудником.
- Запишите. Права пересчитаются автоматически при следующем входе.
Убирая человека из группы пользователей, вы снимаете с него все права, которые эта группа раздаёт через разные группы доступа. Если он должен был потерять доступ только к одной области — сначала проверьте, к чему ещё привязана эта группа.
Способ 2. Убрать группу пользователей из состава группы доступа
Подходит, когда целая группа людей больше не должна иметь эти права.
- В карточке группы доступа, на вкладке
Участники, выделите строку-группу (👥). - Удалите её из состава.
- Запишите изменения.
Теперь никто из этой группы пользователей не входит в группу доступа косвенно — исключение пройдёт без ошибки.
Способ 3. Программно (для администраторов и разработчиков)
Если нужно вычистить состав пакетно — из обработки или внешнего кода. Состав хранится в табличной части Пользователи справочника ГруппыДоступа, а поле Пользователь может ссылаться и на элемент, и на группу справочника Пользователи.
// Убрать конкретного пользователя из группы пользователей
ГруппаОбъект = Справочники.Пользователи.НайтиПоНаименованию("Отдел продаж").ПолучитьОбъект();
НайденныеСтроки = ГруппаОбъект.Пользователи.НайтиСтроки(Новый Структура("Пользователь", СсылкаНаСотрудника));
Для Каждого Строка Из НайденныеСтроки Цикл
ГруппаОбъект.Пользователи.Удалить(Строка);
КонецЦикла;
ГруппаОбъект.Записать();
Почему не работает поиск в табличной части
Частая ловушка: разработчик пишет Пользователи.Найти(СсылкаНаСотрудника, "Пользователь") по составу группы доступа — и получает Неопределено. Метод ищет точное значение, а в строке лежит не сотрудник, а группа пользователей. Совпадения нет, хотя фактически человек в группе есть.
Чтобы проверить реальное (в том числе косвенное) вхождение, идите через запрос по группам пользователей:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СоставГрупп.Ссылка КАК ГруппаПользователей
|ИЗ
| Справочник.Пользователи.Пользователи КАК СоставГрупп
|ГДЕ
| СоставГрупп.Пользователь = &Сотрудник";
Запрос.УстановитьПараметр("Сотрудник", СсылкаНаСотрудника);
Полученные группы пользователей затем сопоставляете с составом групп доступа — так вы видите всю цепочку прав, а не только прямые строки.
Типичные ошибки
- ❌ Удалять пользователя из справочника целиком, лишь бы убрать доступ. Так вы потеряете историю действий и настройки — не делайте этого.
- ❌ Снимать флажок «Вход в программу» вместо правки состава. Это блокирует человека полностью, а не корректирует одну область прав.
- ❌ Чистить профиль полномочий вместо группы пользователей — тогда права пропадут у всех, кто на этом профиле.
- ❌ Забыть про группу
Все пользователи— если группа доступа раздаёт права всем скопом, отдельного человека из неё не исключить в принципе, нужно менять саму логику назначения.
Как предотвратить путаницу с косвенным вхождением
- Ведите права через группы пользователей и профили, а не поштучно — тогда состав прозрачен.
- Давайте группам пользователей понятные имена по отделам/ролям:
Бухгалтерия,Кладовщики,Только просмотр. - Раз в квартал сверяйте, кто в какие группы доступа входит — отчётом
[Права доступа](https://1s-83.com/administrirovanie/prava-dostupa-v-1s.html)(Администрирование→Настройки пользователей и прав→Отчёты).
Если не помогло
Если ошибка держится даже после чистки состава:
- 🔄 Проверьте, не входит ли сотрудник в несколько групп пользователей сразу — косвенных источников может быть больше одного.
- 🧹 Очистите кеш: закройте базу и запустите клиент с ключом
/ClearCache, затем зайдите снова. - 🔁 Обновите права принудительно — перепроведите регламентное задание обновления доступа или просто перезайдите под пользователем.
- 🗂️ В клиент-серверном варианте очистите сеансовые данные пользователя в консоли администрирования.
Частые вопросы
Что значит «включён в группу доступа косвенно»?
Как всё-таки исключить такого пользователя?
Администрирование → Группы пользователей) либо уберите саму группу пользователей из состава группы доступа. После этого права пересчитаются.Права пропадут только к одной области или везде?
Можно ли удалить пользователя из состава прямо в карточке группы доступа?
Почему поиск в табличной части возвращает Неопределено?
После правки состава права не изменились. Что делать?
/ClearCache, а в клиент-серверной базе сбросьте сеанс в консоли администрирования.