Не удаётся исключить пользователя из группы доступа: он включён косвенно

· 6 мин

Содержание

Пользователя нельзя исключить из группы доступа напрямую, потому что он включён в неё косвенно — не сам по себе, а через группу пользователей, которая входит в эту группу доступа. Убрать его из состава самой группы доступа 1С не даёт: сначала нужно вычистить его из той группы пользователей либо убрать саму группу пользователей из группы доступа.

Полный текст, который выдаёт 1С 8.3: Невозможно исключить пользователя из группы доступа, так как он включён в неё косвенно.

Ниже — как за пару минут найти виновную группу пользователей и корректно исключить сотрудника, не сломав права остальным.

Почему пользователь оказался в группе доступа косвенно

В типовых конфигурациях на БСП (Бухгалтерия, ЗУП, ERP, УТ и др.) состав группы доступа задаётся двумя способами:

  • 🧍 прямо — в группу доступа добавлен конкретный пользователь;
  • 👥 косвенно — в группу доступа добавлена целая группа пользователей, а сотрудник состоит в этой группе пользователей.

Когда сотрудник попал в группу доступа вторым способом, строки лично с ним в составе группы доступа нет. Убирать нечего — отсюда и запрет на исключение.

Группа доступа и группа пользователей — разные справочники. Первая раздаёт права (через профиль), вторая просто объединяет людей в набор. Их часто путают, и именно на стыке возникает эта ошибка.

Прямое и косвенное вхождение: в чём разница

Прямое вхождениеКосвенное вхождение
Что в составе группы доступасам пользовательгруппа пользователей
Видно строку с ФИОданет
Как исключитьудалить строкуубрать из группы пользователей
Ошибка при удалениинет…включён в неё косвенно

Как найти, через какую группу пользователь попал в группу доступа

Прежде чем что-то удалять, нужно понять источник. Действуйте по шагам.

Пошаговый помощник
Открыть карточку группы доступа
Раздел АдминистрированиеНастройки пользователей и правГруппы доступа. Откройте ту группу, из которой не получается исключить сотрудника.

Как исключить пользователя из группы доступа

Способ зависит от того, что вы хотите получить: убрать одного человека или отвязать всю группу.

Способ 1. Убрать сотрудника из группы пользователей

Подходит, когда лишний доступ только у одного человека.

  1. Откройте АдминистрированиеГруппы пользователей.
  2. Зайдите в ту группу пользователей, что нашли на предыдущем шаге.
  3. В составе удалите строку с сотрудником.
  4. Запишите. Права пересчитаются автоматически при следующем входе.

Убирая человека из группы пользователей, вы снимаете с него все права, которые эта группа раздаёт через разные группы доступа. Если он должен был потерять доступ только к одной области — сначала проверьте, к чему ещё привязана эта группа.

Способ 2. Убрать группу пользователей из состава группы доступа

Подходит, когда целая группа людей больше не должна иметь эти права.

  1. В карточке группы доступа, на вкладке Участники, выделите строку-группу (👥).
  2. Удалите её из состава.
  3. Запишите изменения.

Теперь никто из этой группы пользователей не входит в группу доступа косвенно — исключение пройдёт без ошибки.

Способ 3. Программно (для администраторов и разработчиков)

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

// Убрать конкретного пользователя из группы пользователей
ГруппаОбъект = Справочники.Пользователи.НайтиПоНаименованию("Отдел продаж").ПолучитьОбъект();
НайденныеСтроки = ГруппаОбъект.Пользователи.НайтиСтроки(Новый Структура("Пользователь", СсылкаНаСотрудника));
Для Каждого Строка Из НайденныеСтроки Цикл
    ГруппаОбъект.Пользователи.Удалить(Строка);
КонецЦикла;
ГруппаОбъект.Записать();

Почему не работает поиск в табличной части

Частая ловушка: разработчик пишет Пользователи.Найти(СсылкаНаСотрудника, "Пользователь") по составу группы доступа — и получает Неопределено. Метод ищет точное значение, а в строке лежит не сотрудник, а группа пользователей. Совпадения нет, хотя фактически человек в группе есть.

Чтобы проверить реальное (в том числе косвенное) вхождение, идите через запрос по группам пользователей:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    СоставГрупп.Ссылка КАК ГруппаПользователей
|ИЗ
|    Справочник.Пользователи.Пользователи КАК СоставГрупп
|ГДЕ
|    СоставГрупп.Пользователь = &Сотрудник";
Запрос.УстановитьПараметр("Сотрудник", СсылкаНаСотрудника);

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

Типичные ошибки

  • Удалять пользователя из справочника целиком, лишь бы убрать доступ. Так вы потеряете историю действий и настройки — не делайте этого.
  • Снимать флажок «Вход в программу» вместо правки состава. Это блокирует человека полностью, а не корректирует одну область прав.
  • Чистить профиль полномочий вместо группы пользователей — тогда права пропадут у всех, кто на этом профиле.
  • Забыть про группу Все пользователи — если группа доступа раздаёт права всем скопом, отдельного человека из неё не исключить в принципе, нужно менять саму логику назначения.

Как предотвратить путаницу с косвенным вхождением

  • Ведите права через группы пользователей и профили, а не поштучно — тогда состав прозрачен.
  • Давайте группам пользователей понятные имена по отделам/ролям: Бухгалтерия, Кладовщики, Только просмотр.
  • Раз в квартал сверяйте, кто в какие группы доступа входит — отчётом [Права доступа](https://1s-83.com/administrirovanie/prava-dostupa-v-1s.html) (АдминистрированиеНастройки пользователей и правОтчёты).

Если не помогло

Если ошибка держится даже после чистки состава:

  • 🔄 Проверьте, не входит ли сотрудник в несколько групп пользователей сразу — косвенных источников может быть больше одного.
  • 🧹 Очистите кеш: закройте базу и запустите клиент с ключом /ClearCache, затем зайдите снова.
  • 🔁 Обновите права принудительно — перепроведите регламентное задание обновления доступа или просто перезайдите под пользователем.
  • 🗂️ В клиент-серверном варианте очистите сеансовые данные пользователя в консоли администрирования.

Частые вопросы

Что значит «включён в группу доступа косвенно»?
Пользователь добавлен в группу доступа не лично, а через группу пользователей, которая входит в состав этой группы доступа. Строки с ним самим в составе нет, поэтому удалить её нельзя.
Как всё-таки исключить такого пользователя?
Уберите его из группы пользователей (АдминистрированиеГруппы пользователей) либо уберите саму группу пользователей из состава группы доступа. После этого права пересчитаются.
Права пропадут только к одной области или везде?
Если убрать человека из группы пользователей, он теряет все права, которые эта группа раздаёт через любые группы доступа. Хотите снять доступ точечно — заведите отдельную группу под нужную область.
Можно ли удалить пользователя из состава прямо в карточке группы доступа?
Только если он входит прямо (отдельной строкой с ФИО). Косвенную строку-группу удалить оттуда можно, но это отвяжет всю группу целиком, а не одного человека.
Почему поиск в табличной части возвращает Неопределено?
Потому что в строке состава хранится ссылка на группу пользователей, а не на самого сотрудника. Ищите вхождение через запрос по составу групп пользователей.
После правки состава права не изменились. Что делать?
Перезайдите под пользователем, очистите кеш ключом /ClearCache, а в клиент-серверной базе сбросьте сеанс в консоли администрирования.