При работе с большим количеством информационных баз (ИБ) 1С часто возникает задача централизации управления пользователями. Когда общее число сотрудников достигает сотни, а количество баз переваливает за десяток, ручное создание учетных записей в каждой конфигурации становится трудозатратным и приводит к ошибкам. Рассмотрим детально, как автоматизировать этот процесс, начиная от простого переноса хешей паролей и заканчивая использованием современных протоколов аутентификации.
Наиболее очевидный путь, который мы разберем первым, — это программное копирование данных из справочника Пользователи одной базы в другую с сохранением пароля. Важно понимать, что платформа 1С не позволяет прочитать пароль в открытом виде, однако она предоставляет доступ к его хеш-значению. Это значение хранится в свойстве СохраняемоеЗначениеПароля объекта ПользовательИнформационнойБазы.
Рассмотрим алгоритм действий для реализации такой синхронизации:
Проанализируем пример кода, который демонстрирует, как программно создать пользователя и перенести его «пароль» (хеш), чтобы пользователю не пришлось его менять при первом входе:
// Пример создания пользователя с переносом хеша пароля
НовыйПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользовательИБ.Имя = "МарьяИванова";
НовыйПользовательИБ.ПолноеИмя = "Иванова Марья Ивановна";
НовыйПользовательИБ.АутентификацияСтандартная = Истина;
// Устанавливаем хеш, полученный из другой базы
// Хеш представляет собой строку Base64
НовыйПользовательИБ.СохраняемоеЗначениеПароля = "ХешПолученныйИзМастерБазы";
// Обязательно записываем пользователя
НовыйПользовательИБ.Записать();
Важное уточнение: Начиная с версии платформы 8.3.15, 1С использует более стойкий алгоритм хеширования (SHA-256). Если ваша мастер-база работает на старой платформе (например, 8.3.12), а база-приемник — на новой, прямой перенос СохраняемоеЗначениеПароля может не сработать из-за несовместимости форматов хеша. В этом случае платформе потребуется «увидеть» ввод реального пароля для пересчета хеша по новому алгоритму.
Если вы используете современные типовые конфигурации (БП 3.0, ERP, ЗУП 3.1), в них уже интегрирована Библиотека Стандартных Подсистем (БСП). Разберем, как задействовать подсистему «Централизованное управление пользователями». Данный механизм позволяет настроить одну базу как «Мастер-систему», которая будет автоматически рассылать изменения в справочнике Пользователи и их права (роли) в подчиненные узлы.
Для настройки этого механизма выполним следующие шаги:
Этот подход хорош тем, что он «из коробки» учитывает связь между системным пользователем ИБ и элементом справочника Пользователи, сохраняя ссылки (UUID) идентичными во всех базах. Это критически важно для корректной работы механизмов версионирования и бизнес-процессов.
Выясним, в чем преимущество технологии OpenID, которую предлагает платформа 1С. Этот метод позволяет одной базе выступать в роли «Провайдера аутентификации». В этом случае пароли вообще не нужно копировать. Когда пользователь пытается зайти в «Базу №2», система перенаправляет его на форму входа «Базы №1» (Провайдера). После успешного ввода пароля пользователь возвращается в целевую базу уже авторизованным.
Посмотрим на преимущества этого подхода:
Для реализации OpenID все базы должны быть опубликованы на веб-сервере (Apache или IIS). В файле публикации default.vrd прописываются соответствующие параметры openid.
Рассмотрим ситуацию, когда в компании развернут домен Windows. Это самый надежный и профессиональный способ синхронизации. В этом случае в 1С мы не храним пароли вообще. В настройках пользователя ИБ мы просто указываем Аутентификация операционной системы и выбираем пользователя из домена.
Пример настройки через код:
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Иванов");
ПользовательИБ.АутентификацияОС = Истина;
ПользовательИБ.ПользовательОС = "DOMAIN\Ivanov";
ПользовательИБ.АутентификацияСтандартная = Ложь; // Отключаем вход по паролю 1С
ПользовательИБ.Записать();
С точки зрения автоматизации, нам достаточно синхронизировать только соответствие ИмяПользователя 1С <-> Логин AD. Все вопросы сложности паролей, их смены и блокировки при увольнении сотрудника берет на себя системный администратор в контроллере домена.
Проанализируем, какой метод выбрать в зависимости от ваших задач:
1. Прямой перенос через StoredPasswordValue: Подходит для разового переезда или небольших групп баз, работающих на одной версии платформы. Риск: при смене алгоритмов шифрования в новых версиях 1С механизм может сломаться.
2. OpenID: Идеально для территориально распределенных баз, доступ к которым осуществляется через тонкий или веб-клиент. Требует стабильного веб-сервера.
3. Active Directory: Лучший выбор для корпоративного сектора. Позволяет управлять доступом ко всем базам «одним кликом» в консоли AD.
4. Внешние инструменты (OneScript): Если баз очень много (сотни), мы рекомендуем использовать скрипты на OneScript. Они позволяют через интерфейс rac/ras управлять пользователями на уровне кластера серверов, не заходя в конфигуратор и не запуская сеанс 1С. Это максимально быстрый способ массовой блокировки или создания учетных записей.
В заключение отметим, что при реализации синхронизации программным способом всегда нужно проверять наличие пользователя по уникальному идентификатору (UUID), а не по имени, так как имена могут меняться (например, при смене фамилии), что может привести к дублированию записей в справочниках.