Почему после обновления 1С с редакции 2.0 на 3.0 не удается выгрузить базу и сбрасываются права администратора?

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

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

Разберем подробнее, почему возникает данное поведение платформы и подсистем БСП, и выясним все возможные варианты решения проблемы.

Причины возникновения проблемы

Проанализируем техническую архитектуру подсистемы управления доступом в современных конфигурациях:

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

Способ 1. Штатное повторное обновление из резервной копии (рекомендуемый)

Рассмотрим по шагам правильный регламент перехода, который гарантирует корректную инициализацию прав доступа:

  1. Развернем резервную копию базы данных, созданную непосредственно перед переходом на редакцию 3.0.
  2. Откроем базу редакции 2.0 в режиме «Конфигуратор».
  3. Перейдем в меню Администрирование -> Пользователи и откроем карточку пользователя, под которым будет выполняться обновление.
  4. На вкладке Прочие обязательно установим флаг напротив роли Администратор (для обновления на 3.0), а также проверим наличие роли Полные права.
  5. Сохраним изменения пользователя и выполним обновление конфигурации до редакции 3.0 в штатном режиме.
  6. Запустим базу в режиме «1С:Предприятие» под данным пользователем и дождемся завершения всех регламентных процедур начального заполнения данных БСП.

Способ 2. Восстановление прав через временный код в привилегированном режиме

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

Откроем модуль управляемого приложения и найдем процедуру ПриНачалеРаботыСистемы. Временно добавим в самое начало процедуры блок кода, исполняемый в привилегированном режиме:


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

// Получаем текущего пользователя информационной базы
ТекущийПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

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

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

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

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

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

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

Способ 4. Корректная раздача прав в режиме «1С:Предприятие»

Если в базу удается войти под пользователем, у которого есть доступ к интерфейсу администрирования, ни в коем случае не назначаем роли через Конфигуратор. Выполним настройку по регламенту БСП:

  1. Перейдем в раздел Администрирование -> Настройки пользователей и прав.
  2. Откроем подраздел Группы доступа (или перейдем в карточку пользователя в справочнике Пользователи).
  3. Включим пользователя в предопределенную группу доступа с профилем Администратор.
  4. При записи элемента БСП самостоятельно пропишет необходимые роли в объекте ПользовательИнформационнойБазы, и они перестанут сбрасываться.

Альтернативные способы создания резервной копии

Если основной целью является создание резервной копии базы данных, а выгрузка через Конфигуратор в .dt заблокирована ошибкой прав, рассмотрим альтернативные методы архивации:

  1. Для файловых баз: Полностью завершим работу всех пользователей и скопируем файл базы данных 1Cv8.1CD средствами операционной системы. Это наиболее надежный способ резервного копирования файловых баз, не зависящий от прав конкретного пользователя платформы.
  2. Для клиент-серверных баз: Выполним создание резервной копии (дампа) встроенными средствами СУБД (например, средствами Microsoft SQL Server или PostgreSQL). Выгрузка в .dt не предназначена для регулярного резервного копирования рабочих баз данных в промышленной эксплуатации.
← На главную