При переходе с типовых конфигураций 1С поколения 2.0 (на обычных формах) на редакцию 3.0 (на управляемых формах под управлением Библиотеки стандартных подсистем) администраторы нередко сталкиваются с ситуацией: обновление завершено успешно, однако при попытке выгрузить информационную базу в файл .dt система выдает ошибку «Недостаточно прав доступа!». При попытке назначить роли Администратор системы или Полные права через Конфигуратор флажки сбрасываются сразу после сохранения или при входе в режим «1С:Предприятие».
Разберем подробнее, почему возникает данное поведение платформы и подсистем БСП, и выясним все возможные варианты решения проблемы.
Проанализируем техническую архитектуру подсистемы управления доступом в современных конфигурациях:
Администратор системы была добавлена в Конфигураторе, но пользователю не назначен профиль Администратор в справочниках базы, БСП расценивает это как несанкционированное изменение и автоматически сбрасывает роль при старте сеанса.Администратор (для обновления на 3.0)). Если обновление выполнено под пользователем со старыми правами, после реструктуризации он теряет административные привилегии, а новые профили групп доступа не успевают привязаться к учетной записи.ПользовательИнформационнойБазы и элементами справочника Пользователи по уникальному идентификатору ИдентификаторПользователяИБ. Это приводит к повреждению ссылочной целостности базы и ошибкам при проверке утилитой chkdbf.Рассмотрим по шагам правильный регламент перехода, который гарантирует корректную инициализацию прав доступа:
Если возврат к резервной копии невозможен (например, в базе уже велась работа), разберем способ программного возврата прав без отката данных. Для этого потребуется включить возможность редактирования конфигурации.
Откроем модуль управляемого приложения и найдем процедуру ПриНачалеРаботыСистемы. Временно добавим в самое начало процедуры блок кода, исполняемый в привилегированном режиме:
УстановитьПривилегированныйРежим(Истина);
// Получаем текущего пользователя информационной базы
ТекущийПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
// Находим административный профиль и назначаем пользователю группу доступа
ГруппаАдминистраторы = Справочники.ГруппыДоступа.НайтиПоНаименованию("Администраторы");
Если Не ГруппаАдминистраторы.Пустая() Тогда
ОбъектГруппы = ГруппаАдминистраторы.ПолучитьОбъект();
СтрокаПользователя = ОбъектГруппы.Пользователи.Найти(Справочники.Пользователи.НайтиПоНаименованию(ТекущийПользовательИБ.ПолноеИмя), "Пользователь");
Если СтрокаПользователя = Неопределено Тогда
НоваяСтрока = ОбъектГруппы.Пользователи.Добавить();
НоваяСтрока.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ТекущийПользовательИБ.ПолноеИмя);
ОбъектГруппы.Записать();
КонецЕсли;
КонецЕсли;
После успешного запуска сеанса под полными правами подсистема безопасности зафиксирует права за пользователем. После этого добавленный временный код необходимо обязательно удалить из модуля управляемого приложения.
Посмотрим на вариант запуска регламентных процедур обновления, если доступ в интерфейс системы частично сохранен. Запустим платформу в режиме «1С:Предприятие» с дополнительным параметром командной строки:
1cv8.exe ENTERPRISE /F "ПутьКБазе" /C ЗапуститьОбновлениеИнформационнойБазы
Данный параметр инициирует выполнение отложенных обработчиков обновления БСП, которые в ряде случаев способны автоматически восстановить сопоставление прав для первого зарегистрированного пользователя с полным доступом.
Если в базу удается войти под пользователем, у которого есть доступ к интерфейсу администрирования, ни в коем случае не назначаем роли через Конфигуратор. Выполним настройку по регламенту БСП:
Пользователи).ПользовательИнформационнойБазы, и они перестанут сбрасываться.Если основной целью является создание резервной копии базы данных, а выгрузка через Конфигуратор в .dt заблокирована ошибкой прав, рассмотрим альтернативные методы архивации:
1Cv8.1CD средствами операционной системы. Это наиболее надежный способ резервного копирования файловых баз, не зависящий от прав конкретного пользователя платформы..dt не предназначена для регулярного резервного копирования рабочих баз данных в промышленной эксплуатации.