Многие администраторы и разработчики, работающие с конфигурацией «1С:Бухгалтерия предприятия 2.0» (на обычных формах), сталкиваются с неприятной ситуацией: внезапно пароль основной учетной записи администратора перестает подходить. При детальном анализе выясняется, что система сама изменила его на случайную последовательность символов. Рассмотрим подробнее, почему это происходит, разберем программный код этого механизма и выясним, как правильно настроить базу, чтобы избежать блокировки доступа.
Причиной такого поведения является регламентное задание ОбновлениеКонфигурации. Проанализируем участок кода, который отвечает за этот процесс. Обычно он располагается в общем модуле, вызываемом данным заданием. Программа считывает настройки из специальной константы и выполняет следующие действия:
// Процедура производит действия, приводящие к регламентному обновлению ИБ
// но только для серверного варианта
Процедура ОбновлениеКонфигурации() Экспорт
СтруктураОбновленияИБ = Константы.НастройкаОбновленияКонфигурации.Получить().Получить();
// Получение имени администратора из настроек
ИмяАдминистратораИБ = СтруктураОбновленияИБ.ИмяАдминистратораИБ;
// Поиск пользователя в списке пользователей ИБ
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяАдминистратораИБ);
// Генерация нового случайного пароля на основе UUID
НовыйПароль = Лев(Строка(Новый УникальныйИдентификатор), 20);
// Установка нового пароля и запись пользователя
Пользователь.Пароль = НовыйПароль;
Пользователь.Записать();
// Сохранение нового пароля в переменную для дальнейшего использования в скрипте обновления
ПарольАдминистратораИБ = НовыйПароль;
КонецПроцедуры
Как мы видим из кода, объект ПользователиИнформационнойБазы используется для программного изменения свойств учетной записи. Метод Новый УникальныйИдентификатор генерирует строку, которую практически невозможно угадать вручную, что и приводит к потере доступа пользователем, если под этим именем работает реальный человек.
Рассмотрим ситуацию с точки зрения разработчиков типовой конфигурации. Механизм автоматического обновления в серверном варианте предполагает, что система должна самостоятельно запустить еще один сеанс (часто через конфигуратор или пакетный режим работы) для выполнения реструктуризации базы данных и применения изменений. Для этого ей нужны права администратора.
Зачем менять пароль на случайный? Проанализируем основные соображения безопасности:
Если вы обнаружили, что ваш пароль меняется, значит, ваша учетная запись указана в настройках автоматического обновления как «техническая». Посмотрим на способы решения этой задачи.
Это самый правильный и безопасный метод. Вместо того чтобы указывать свою рабочую учетную запись, создадим специального «робота» для обновлений.
UpdateRobot или Service_Admin.UpdateRobot и укажем его текущий пароль.НастройкаОбновленияКонфигурации обновились.Теперь система будет менять пароль только у этого технического пользователя, а ваш основной «Администратор» останется нетронутым.
Если вы предпочитаете обновлять конфигурацию вручную через Конфигуратор и не используете типовой механизм автоматического скачивания и установки обновлений, проанализируем необходимость работы этого регламентного задания.
Выясним, как отключить смену пароля полностью:
Обновление конфигурации.После этого код, меняющий пароль, просто не будет запускаться. Однако помните: если в будущем вы решите воспользоваться кнопкой «Обновить конфигурацию» в режиме Предприятия, система может снова потребовать настройки и включить задание.
Проанализируем ситуацию, когда вы уже создали нового пользователя, но пароль все равно меняется у старого администратора. Это происходит потому, что в константе НастройкаОбновленияКонфигурации сохранена старая структура данных. Обязательно убедитесь, что вы не просто создали пользователя в списке, а именно перевыбрали его в форме настроек обновления и сохранили эти настройки. Только после перезаписи значения константы регламентное задание увидит новое имя пользователя ИБ.
Таким образом, мы разобрали внутреннюю логику работы 1С:Бухгалтерии 2.0. Понимание того, как работают объекты типа КонстантыМенеджер и ПользователиИнформационнойБазы, позволяет гибко управлять безопасностью системы и избегать досадных блокировок административного доступа.