Как программно создать пользователя в 1С?

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

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

Рассмотрим, как выполняется программное создание пользователя 1С.

Код 1С v 8.x:


НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();

НовыйПользователь.Имя = "Имя";

НовыйПользователь.ПолноеИмя = "Фамилия Имя Отчество";

НовыйПользователь.АутентификацияСтандартная = Истина;

НовыйПользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Администратор;

НовыйПользователь.Пароль = "пароль";

НовыйПользователь.Роли.Добавить(Метаданные.Роли.Администратор);

НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь;

НовыйПользователь.Язык = Метаданные.Языки.Русский;

НовыйПользователь.Записать();

Необходимо учитывать, что в свойство «Пароль» администратор сможет внести только новые данные. Определить личные сведения, внесенные в систему ранее, невозможно.

В 1С создание пользователя программно сможет выполнить только специалист с административными правами. При их отсутствии он сможет внести изменения только в небольшой список собственных данных. Предположим, на предприятии возникла необходимость предоставить рядовому пользователю возможность внесения новых участников, то есть изменить его роль в системе. Для этого можно создать обработку, в которой он сможет вносить имя, пароль и другие свойства для новых специалистов, которые будут работать в 1С. В этом случае добавление новых пользователей будет выполняться не на клиенте, а на сервере. Таким образом, информация о каждом новом сотруднике будет передаваться в виде параметра в процедуру привилегированного модуля.

Рассмотрим, как выполнить изменение роли пользователя.

Код 1С v 8.x:


Процедура ЗаписатьНовогоПользователя(НовыйПользователь) Экспорт

// Проверить наличие роли Администратор у нового пользователя.

РольАдминистратор = Метаданные.Роли.Администратор;

Если НовыйПользователь.Роли.Содержит(РольАдминистратор) Тогда

Сообщить("Добавление пользователя с административными правами запрещено");

Иначе // у нового пользователя нет роли Администратор

// Проверить, что текущий пользователь обладает правами Менеджера или Администратора.

Если РольДоступна(РольАдминистратор) ИЛИ РольДоступна(Метаданные.Роли.Менеджер) Тогда

// Выполнить запись нового пользователя.

НовыйПользователь.Записать();

Иначе

Сообщить("Недостаточно прав доступа для добавления пользователя");

КонецЕсли;

КонецЕсли;

КонецПроцедуры

При внедрении приведенного выше скрипта важно учитывать один нюанс. В частности, если пользователь с измененной ролью попробует добавить участника с правами администратора, то выйдет запрет на совершение этого действия. Запись нового специалиста выполняется после системной проверки и подтверждения, что он является менеджером, а не администратором.

Рассмотрим, как удалить роль у пользователя.

Код 1С v 8.x:


Процедура Главная()

// Удаление роли у существующего пользователя

ИмяПользователя = "ФамилияИмяОтчество";

ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);

Если ПользовательИБ = Неопределено Тогда

Сообщить("Пользователь с таким именем не найден в базе.");

Иначе

ПользовательИБ.Роли.Удалить(v8.Метаданные.Роли.ПравоВнешнегоПодключения);

ПользовательИБ.Записать();

Сообщить("Роль удалена.");

КонецЕсли;

КонецПроцедуры

И, наконец, разберем, как удалить пользователя из системы.

Код 1С v 8.x:


Процедура Главная()

// Удаление пользователя.

ИмяУдаляемого = "Грозный И.В.";

ПользовательИБ = v8.ПользователиИнформационнойБазы.НайтиПоИмени(ИмяУдаляемого);

Если ПользовательИБ = Неопределено Тогда

Сообщить("Пользователь с таким именем не найден в базе.");

Иначе

ПользовательИБ.Удалить();

Сообщить("Пользователь удалён.");

КонецЕсли;

КонецПроцедуры

Поделиться:

Telegram
VK
WhatsApp

Оцените статью

0

5

Читайте также:

Некогда разбираться самостоятельно?
Напишите нам и наши эксперты ответят вам