Найти в Дзене
Блог 1С программиста

Программное создание и изменение пользователя 1С

В типовом исполнении «Пользователи информационной базы» (которых можно посмотреть в конфигураторе) связаны со справочниками «Пользователи» и «Внешние пользователи» через реквизиты «ИдентификаторПользователяИБ» и «СвойстваПользователяИБ» данных справочников. Соответственно «ПользовательИБ» и «Пользователь» работают в паре и при создании и изменении нужно учитывать эту связь. Создание нового пользователя Способ 1 — используя функционал БСП Создается элемент справочника «Пользователи». В его «Дополнительных свойствах» описываются данные «Пользователя ИБ» и при записи элемента «Пользователь» по указанному описанию автоматически создается и привязывается «Пользователь ИБ». Далее можно включить пользователя в необходимую группу доступа. НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент(); НовыйПользователь.Наименование = "ИвановИИ"; НовыйПользователь.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Иван Иванович"); //НовыйПользователь.Недействителен
Оглавление

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

Создание нового пользователя

Способ 1 — используя функционал БСП

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

НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();

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

НовыйПользователь.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Иван Иванович");

//НовыйПользователь.Недействителен = Ложь;

//НовыйПользователь.Служебный = Ложь;

ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ();

ОписаниеПользователяИБ.Имя = "ИвановИИ";

ОписаниеПользователяИБ.ПолноеИмя = "Иванов Иван Иванович";

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

ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = Истина;

ОписаниеПользователяИБ.Пароль = "1234"; //Пользователи.СоздатьПароль(); //не меньше 4-х символов

ОписаниеПользователяИБ.Вставить("Действие", "Записать");

НовыйПользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ);

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

// Включение пользователя в группу доступа

ГруппаДоступаНовогоПользователя = Справочники.ГруппыДоступа.НайтиПоНаименованию("Бухгалтер");

ГруппаДоступаНовогоПользователяОбъект = ГруппаДоступаНовогоПользователя.ПолучитьОбъект();

ГруппаДоступаНовогоПользователяОбъект.Пользователи.Добавить().Пользователь = НовыйПользователь;

ГруппаДоступаНовогоПользователяОбъект.Записать();

Способ 2 — не используя функционал БСП

Создается «Пользователь ИБ», затем создается элемент справочника «Пользователи» и осуществляется привязка.

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

ПользовательИБ.Имя = "ИвановИИ";

ПользовательИБ.ПолноеИмя = "Иванов Иван Иванович";

ПользовательИБ.АутентификацияОС = Ложь;

ПользовательИБ.АутентификацияOpenID = Ложь;

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

ПользовательИБ.ЗапрещеноИзменятьПароль = Ложь;

ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;

ПользовательИБ.Пароль ="";  

//ПользовательИБ.ОсновнойИнтерфейс = Метаданные.Интерфейсы[""];    

//ПользовательИБ.Язык = Метаданные.Языки[""];

//ПользовательИБ.Роли.Добавить(Метаданные.Роли[""]);

//ПользовательИБ.РежимЗапуска = РежимыЗапуска[""];

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

НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();

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

НовыйПользователь.ОбменДанными.Загрузка = Истина;

НовыйПользователь.ИдентификаторПользователяСервиса = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");

НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;

НовыйПользователь.Недействителен = Ложь;

НовыйПользователь.Подготовлен = Истина;

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

 

Способ 3 — используя функционал конфигурации ЗУП 3.1

В ЗУП 3.1 есть стандартная обработка, которая называется «СозданиеПользователейФизическихЛиц» (синоним — Создание пользователей для сотрудников). Данная обработка использует функцию СамообслуживаниеСотрудников.НовыйПользователь(), ниже приведен пример создания нового пользователя на основе данной функции:

ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Иван Иванович");

 

НастройкиПользователей = СамообслуживаниеСотрудниковКлиентСервер.ОписаниеНастроекСозданияПользователей();

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

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

ДанныеСотрудника = Новый Структура("Пользователь, ФизическоеЛицо, ПользовательОС, Фамилия, Имя, Отчество", Справочники.Пользователи.ПустаяСсылка(), ФизическоеЛицо, "");

ЗаполнитьЗначенияСвойств(ДанныеСотрудника, ФизическиеЛицаКлиентСервер.ЧастиИмени(ФизическоеЛицо.Наименование));

НовыйПользователь = СамообслуживаниеСотрудников.НовыйПользователь(ДанныеСотрудника, НастройкиПользователей, НастройкиСообщений);

// Присвоение группы доступа

ГруппаДоступаНовогоПользователя = Справочники.ГруппыДоступа.НайтиПоНаименованию("Сотрудник");

ГруппаДоступаНовогоПользователяОбъект = ГруппаДоступаНовогоПользователя.ПолучитьОбъект();

ГруппаДоступаНовогоПользователяОбъект.Пользователи.Добавить().Пользователь = НовыйПользователь;

ГруппаДоступаНовогоПользователяОбъект.Записать();

Изменение существующего пользователя

Пример изменения уже привязанного «Пользователя ИБ»

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

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

НайденыйПользовательИБ.ПоказыватьВСпискеВыбора = Истина;

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

КонецЕсли;