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

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

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

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

Выясним причину срабатывания защиты

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

Для платформы «администратором» считается пользователь, обладающий определенным набором прав. Проанализируем, какие условия должны быть соблюдены одновременно:

  1. Наличие роли с правом Администрирование.
  2. Наличие роли с правом Администрирование системы (это критически важное право появилось в версии 8.3).
  3. Наличие прав на интерактивный запуск клиента (Тонкий клиент, Толстый клиент).
  4. Установленный флаг Аутентификация 1С:Предприятия.

Способ 1: Создание «Суперпользователя» в Конфигураторе

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

  1. Откроем Конфигуратор и перейдем в меню Администрирование — Пользователи.
  2. Создадим нового пользователя (например, с именем Admin_Update).
  3. На вкладке Основные проверим, что установлена галочка Аутентификация 1С:Предприятия.
  4. Перейдем на вкладку Прочие. Здесь кроется основная причина ошибки. Нам нужно не просто выбрать роль Полные права, а отметить галочками следующие роли:
    • Полные права
    • Администратор системы
    • Администрирование
  5. Важный нюанс: Если конфигурация самописная, проверим в дереве метаданных саму роль. Для этого дважды кликнем по роли (например, ПолныеПрава) и убедимся, что в списке прав отмечены пункты Администрирование и Администрирование системы. Без последнего права платформа 8.3 не признает пользователя администратором.
  6. Также проверим права на запуск. В окне редактирования роли должны быть установлены галочки Интерактивное открытие внешних обработок, Интерактивный запуск тонкого клиента и Интерактивный запуск толстого клиента.

После создания такого пользователя попробуем снова выполнить обновление конфигурации базы данных (клавиша F7).

Способ 2: Радикальное очищение списка пользователей

Если манипуляции с ролями не помогают, мы можем временно перевести базу в режим «без пользователей». Рассмотрим этот алгоритм:

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

Этот метод часто помогает при переходе с Бухгалтерии предприятия 2.0 на 3.0, когда структура ролей меняется кардинально, и старые пользователи «теряют» связь с новыми правами.

Способ 3: Проверка разделителей данных

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

Рассмотрим порядок действий:

  1. В карточке пользователя в Конфигураторе перейдем на вкладку Разделение данных.
  2. Убедимся, что у нашего администратора сняты все флаги в колонке использования разделителей.
  3. Если пользователь находится внутри области (например, ОбластьДанныхОсновныеДанные = 1), он не будет считаться «главным» администратором всей системы, что и вызовет ошибку при попытке обновить структуру метаданных всей базы.

Способ 4: Особенности конфигураций на БСП

Если мы работаем с современными типовыми решениями (УТ 11, БП 3.0, ЗУП 3.1), управление пользователями часто завязано на Библиотеку Стандартных Подсистем (БСП). В таких системах недостаточно просто создать пользователя в Конфигураторе.

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

Если ошибка возникает при попытке первого запуска после загрузки .cf, попробуем следующее:

  1. В Конфигураторе дадим пользователю роль Полные права и ОБЯЗАТЕЛЬНО роль Интерактивное открытие внешних отчетов и обработок.
  2. Если запуск в Предприятии все равно невозможен, проверим, не была ли случайно изменена «Основная роль» в свойствах самой конфигурации (корневой объект дерева метаданных).

Решение сопутствующих проблем: Неуникальные записи

Иногда после преодоления ошибки с пользователями при обновлении возникает следующая проблема — «Записи регистра сведений стали неуникальными». Это часто случается при объединении разных конфигураций (например, УПП и ЗУП). Рассмотрим пример программного решения для очистки такого регистра, чтобы обновление могло завершиться:


// Пример обработки для очистки регистра перед обновлением
Процедура ОчиститьРегистр(ИмяРегистра)
    НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
    // Без установки отборов набор при записи очистит все данные регистра
    НаборЗаписей.Записать();
    Сообщить("Регистр " + ИмяРегистра + " успешно очищен.");
КонецПроцедуры

Эту процедуру следует использовать только в том случае, если данные в конфликтующем регистре не представляют ценности или будут перезаполнены позже автоматически (например, кэшируемые данные или классификаторы).

Резюме и рекомендации

Для успешного решения проблемы мы рекомендуем придерживаться следующего алгоритма:

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

← На главную