При выполнении технических работ в 1С:Предприятие, таких как загрузка новой конфигурации (.cf файла), объединение конфигураций или переход на новую версию (например, с Бухгалтерии 2.0 на 3.0), специалисты часто сталкиваются с блокирующим сообщением: «После исполнения в списке не осталось бы ни одного пользователя с административными правами!».
Это сообщение не является критической ошибкой базы данных в привычном понимании. Это защитный механизм платформы 1С:Предприятие 8.3, который предотвращает ситуацию, когда после обновления структуры базы данных ни один пользователь не сможет войти в систему с правами администратора. Рассмотрим подробнее, почему это происходит и как решить проблему различными методами.
Платформа анализирует список существующих пользователей и сопоставляет их с новыми ролями, которые приходят из загружаемого .cf. Если платформа «видит», что ни у одного из существующих (или вновь создаваемых) пользователей не будет достаточного набора прав для управления системой, она блокирует обновление (кнопка «Принять» в окне изменения структуры базы данных становится недоступной или выдает ошибку).
Для платформы «администратором» считается пользователь, обладающий определенным набором прав. Проанализируем, какие условия должны быть соблюдены одновременно:
Администрирование.Администрирование системы (это критически важное право появилось в версии 8.3).Тонкий клиент, Толстый клиент).Аутентификация 1С:Предприятия.Самый простой и правильный способ — создать временного технического пользователя с избыточными правами. Разберем этот процесс по шагам:
Admin_Update).Аутентификация 1С:Предприятия.Полные права, а отметить галочками следующие роли:
Полные праваАдминистратор системыАдминистрированиеПолныеПрава) и убедимся, что в списке прав отмечены пункты Администрирование и Администрирование системы. Без последнего права платформа 8.3 не признает пользователя администратором.Интерактивное открытие внешних обработок, Интерактивный запуск тонкого клиента и Интерактивный запуск толстого клиента.После создания такого пользователя попробуем снова выполнить обновление конфигурации базы данных (клавиша F7).
Если манипуляции с ролями не помогают, мы можем временно перевести базу в режим «без пользователей». Рассмотрим этот алгоритм:
Этот метод часто помогает при переходе с Бухгалтерии предприятия 2.0 на 3.0, когда структура ролей меняется кардинально, и старые пользователи «теряют» связь с новыми правами.
Проанализируем ситуацию, если в конфигурации используется механизм разделения данных (например, в облачных решениях или сервисах Fresh). Платформа требует, чтобы в системе существовал хотя бы один пользователь, работающий «вне областей», то есть без разделителей.
Рассмотрим порядок действий:
ОбластьДанныхОсновныеДанные = 1), он не будет считаться «главным» администратором всей системы, что и вызовет ошибку при попытке обновить структуру метаданных всей базы.Если мы работаем с современными типовыми решениями (УТ 11, БП 3.0, ЗУП 3.1), управление пользователями часто завязано на Библиотеку Стандартных Подсистем (БСП). В таких системах недостаточно просто создать пользователя в Конфигураторе.
Рассмотрим ситуацию: вы создали пользователя в Конфигураторе, но при запуске в режиме Предприятие система выдает ошибку прав. Это происходит потому, что в БСП права управляются через справочники Группы доступа и Профили групп доступа.
Если ошибка возникает при попытке первого запуска после загрузки .cf, попробуем следующее:
Полные права и ОБЯЗАТЕЛЬНО роль Интерактивное открытие внешних отчетов и обработок.Иногда после преодоления ошибки с пользователями при обновлении возникает следующая проблема — «Записи регистра сведений стали неуникальными». Это часто случается при объединении разных конфигураций (например, УПП и ЗУП). Рассмотрим пример программного решения для очистки такого регистра, чтобы обновление могло завершиться:
// Пример обработки для очистки регистра перед обновлением
Процедура ОчиститьРегистр(ИмяРегистра)
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
// Без установки отборов набор при записи очистит все данные регистра
НаборЗаписей.Записать();
Сообщить("Регистр " + ИмяРегистра + " успешно очищен.");
КонецПроцедуры
Эту процедуру следует использовать только в том случае, если данные в конфликтующем регистре не представляют ценности или будут перезаполнены позже автоматически (например, кэшируемые данные или классификаторы).
Для успешного решения проблемы мы рекомендуем придерживаться следующего алгоритма:
Администрирование системы в используемых ролях.v8users (крайняя мера для экспертов)..dt файл) перед любыми манипуляциями со списком пользователей и структурой конфигурации.Помните, что платформа 1С защищает целостность вашей системы. Следуя по шагам, описанным выше, мы сможем корректно обновить конфигурацию, сохранив при этом полный контроль над правами доступа.