Как исправить ошибку «После исполнения в списке не осталось бы ни одного пользователя с административными правами» в 1С 8.3?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При администрировании информационных баз на платформе 1С:Предприятие 8.3 (в частности, в конфигурации «Бухгалтерия предприятия 3.0» и других решениях на базе Библиотеки стандартных подсистем) специалисты нередко сталкиваются с ситуацией, когда доступ к базе оказывается заблокирован. Попытка завести нового администратора или отредактировать существующего в режиме «1С:Предприятие» завершается исключением в модуле ПользователиСлужебный со следующим текстом:

«При записи пользователя информационной базы произошла ошибка: После исполнения в списке не осталось бы ни одного пользователя с административными правами, допускающего аутентификацию средствами 1С:Предприятия!»

Проанализируем архитектурные причины возникновения этой ошибки и разберем пошаговые методы восстановления корректного доступа к информационной базе.

Архитектура подсистемы пользователей в типовых конфигурациях

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

  1. Системный список (Пользователи информационной базы): хранится на уровне платформы в системных таблицах (таких как v8users). Именно эти записи платформа проверяет в окне авторизации при старте сеанса.
  2. Прикладной справочник Пользователи: предназначен для ведения учетных записей внутри базы данных. Элемент справочника связывается с системным пользователем платформы через реквизит ИдентификаторПользователяИБ типа УникальныйИдентификатор.

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

Основная причина ошибки и быстрое решение

Выясним причину, почему возникает блокирующее исключение при попытке создания администратора. Чаще всего при создании или редактировании учетной записи в пользовательском режиме упускается ключевой флаг в карточке пользователя.

Разберем по шагам, как устранить ошибку штатным способом:

  1. Откроем информационную базу в режиме «1С:Предприятие» под учетной записью с административными правами (либо в режиме без авторизации, если список пользователей был сброшен).
  2. Перейдем в раздел «Администрирование» — «Настройки пользователей и прав» — «Пользователи».
  3. Откроем карточку создаваемого пользователя или нажмем кнопку «Создать».
  4. Обязательно установим флаг «Вход в программу разрешен». Без этого флага платформа отключает аутентификацию 1С:Предприятия, что и провоцирует аварийное завершение обработчика ПередЗаписью.
  5. Укажем имя для входа, зададим пароль и включим опцию «Аутентификация 1С:Предприятия».
  6. Перейдем по ссылке «Права доступа» в панели навигации формы пользователя и включим его в предопределенную группу «Администраторы» (профиль с ролью «Администратор системы» / «Полные права»).
  7. Нажмем «Записать и закрыть». Ошибка исчезнет, так как условие наличия действующего администратора с разрешенным входом будет полностью соблюдено.

Почему слетают права и не работает Конфигуратор?

Рассмотрим подробнее сценарий, когда администратор пытается настроить роли напрямую через Конфигуратор (меню «Администрирование» — «Пользователи»). Это типичная ошибка при работе с БСП:

  1. Перезапись ролей подсистемой БСП: если назначить роли системному пользователю в Конфигураторе, фоновые механизмы синхронизации при первом же входе в базу перезапишут их в соответствии со справочниками групп доступа. Пользователи в БСП должны администрироваться исключительно в режиме «1С:Предприятие».
  2. Сбои при обновлении конфигурации: при переходе с устаревших редакций (например, с редакции 2.0 на 3.0) роли трансформируются в профили групп доступа. Если фоновые процедуры обновления были прерваны, флаг разрешения входа может быть программно снят, а привязка к группам доступа нарушена.
  3. Рассинхронизация идентификаторов: при повреждении кэша или сбоях обмена данными значение реквизита ИдентификаторПользователяИБ в справочнике Пользователи может потерять связь с записью в таблице v8users.

Безопасные методы восстановления доступа к базе данных

Использование сторонних шестнадцатеричных редакторов (Hex-редакторов) для зачистки таблиц базы данных несет высокий риск безвозвратного повреждения структуры таблиц и потери ссылочной целостности. Разберем корректные способы восстановления доступа.

1. Принудительный запуск процедур обновления

Если сбой прав произошел после наката релиза или перехода с предыдущей версии, запустим клиент 1С с форсированием процедур обновления. Для этого в свойствах ярлыка запуска или через командную строку передадим параметр:

1cv8c.exe ENTERPRISE /F "ПутьКБазе" /C ЗапуститьОбновлениеИнформационнойБазы

Этот ключ заставляет конфигурацию выполнить отложенные обработчики БСП, восстанавливающие предопределенные группы доступа и пересчитывающие права.

2. Программное восстановление привязки пользователя

Если доступ к базе получен в привилегированном режиме (например, при очищенном списке пользователей или через внешнюю обработку), привязку системного администратора к справочнику можно выполнить программно:


УстановитьПривилегированныйРежим(Истина);

// 1. Создаем или получаем системного пользователя ИБ
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "Администратор";
ПользовательИБ.ПолноеИмя = "Администратор базы данных";
ПользовательИБ.АутентификацияСтандартная = Истина;
ПользовательИБ.Пароль = "СложныйПароль123";

// Назначаем системную роль администратора
РольАдминистратора = Метаданные.Роли.Найти("АдминистраторСистемы");
Если РольАдминистратора <> Неопределено Тогда
    ПользовательИБ.Роли.Добавить(РольАдминистратора);
КонецЕсли;

ПользовательИБ.Записать();

// 2. Создаем или обновляем элемент справочника Пользователи
ПользовательСсылка = Справочники.Пользователи.НайтиПоНаименованию("Администратор");
Если ПользовательСсылка.Пустая() Тогда
    ПользовательОбъект = Справочники.Пользователи.СоздатьЭлемент();
    ПользовательОбъект.Наименование = "Администратор";
Иначе
    ПользовательОбъект = ПользовательСсылка.ПолучитьОбъект();
КонецЕсли;

// Связываем по уникальному идентификатору
ПользовательОбъект.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
ПользовательОбъект.Записать();

3. Проверка целостности таблиц базы данных

Для файловых информационных баз при возникновении необъяснимых ошибок доступа обязательно проверим целостность файла 1Cv8.1CD:

  1. Завершим все сеансы работы с базой данных и сделаем резервную копию каталога.
  2. Запустим утилиту chdbfl.exe из каталога bin установленной платформы 1С.
  3. Установим признак «Исправлять обнаруженные ошибки» и выполним сканирование.
  4. После успешного завершения откроем базу в Конфигураторе и выполним пункт меню «Администрирование» — «Тестирование и исправление», отметив проверки логической и ссылочной целостности.
← На главную