В типовом исполнении «Пользователи информационной базы» (которых можно посмотреть в конфигураторе) связаны со справочниками «Пользователи» и «Внешние пользователи» через реквизиты «ИдентификаторПользователяИБ» и «СвойстваПользователяИБ» данных справочников. Соответственно «ПользовательИБ» и «Пользователь» работают в паре и при создании и изменении нужно учитывать эту связь.
Создание нового пользователя
Способ 1 — используя функционал БСП
Создается элемент справочника «Пользователи». В его «Дополнительных свойствах» описываются данные «Пользователя ИБ» и при записи элемента «Пользователь» по указанному описанию автоматически создается и привязывается «Пользователь ИБ». Далее можно включить пользователя в необходимую группу доступа.
НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
НовыйПользователь.Наименование = "ИвановИИ";
НовыйПользователь.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Иван Иванович");
//НовыйПользователь.Недействителен = Ложь;
//НовыйПользователь.Служебный = Ложь;
ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ();
ОписаниеПользователяИБ.Имя = "ИвановИИ";
ОписаниеПользователяИБ.ПолноеИмя = "Иванов Иван Иванович";
ОписаниеПользователяИБ.АутентификацияСтандартная = Истина;
ОписаниеПользователяИБ.ПоказыватьВСпискеВыбора = Истина;
ОписаниеПользователяИБ.Пароль = "1234"; //Пользователи.СоздатьПароль(); //не меньше 4-х символов
ОписаниеПользователяИБ.Вставить("Действие", "Записать");
НовыйПользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ);
НовыйПользователь.Записать();
// Включение пользователя в группу доступа
ГруппаДоступаНовогоПользователя = Справочники.ГруппыДоступа.НайтиПоНаименованию("Бухгалтер");
ГруппаДоступаНовогоПользователяОбъект = ГруппаДоступаНовогоПользователя.ПолучитьОбъект();
ГруппаДоступаНовогоПользователяОбъект.Пользователи.Добавить().Пользователь = НовыйПользователь;
ГруппаДоступаНовогоПользователяОбъект.Записать();
Способ 2 — не используя функционал БСП
Создается «Пользователь ИБ», затем создается элемент справочника «Пользователи» и осуществляется привязка.
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "ИвановИИ";
ПользовательИБ.ПолноеИмя = "Иванов Иван Иванович";
ПользовательИБ.АутентификацияОС = Ложь;
ПользовательИБ.АутентификацияOpenID = Ложь;
ПользовательИБ.АутентификацияСтандартная = Истина;
ПользовательИБ.ЗапрещеноИзменятьПароль = Ложь;
ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
ПользовательИБ.Пароль ="";
//ПользовательИБ.ОсновнойИнтерфейс = Метаданные.Интерфейсы[""];
//ПользовательИБ.Язык = Метаданные.Языки[""];
//ПользовательИБ.Роли.Добавить(Метаданные.Роли[""]);
//ПользовательИБ.РежимЗапуска = РежимыЗапуска[""];
ПользовательИБ.Записать();
НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
НовыйПользователь.Наименование = "ИвановИИ";
НовыйПользователь.ОбменДанными.Загрузка = Истина;
НовыйПользователь.ИдентификаторПользователяСервиса = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
НовыйПользователь.Недействителен = Ложь;
НовыйПользователь.Подготовлен = Истина;
НовыйПользователь.Записать();
Способ 3 — используя функционал конфигурации ЗУП 3.1
В ЗУП 3.1 есть стандартная обработка, которая называется «СозданиеПользователейФизическихЛиц» (синоним — Создание пользователей для сотрудников). Данная обработка использует функцию СамообслуживаниеСотрудников.НовыйПользователь(), ниже приведен пример создания нового пользователя на основе данной функции:
ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Иван Иванович");
НастройкиПользователей = СамообслуживаниеСотрудниковКлиентСервер.ОписаниеНастроекСозданияПользователей();
НастройкиПользователей.АутентификацияСтандартная = Истина;
НастройкиПользователей.ПоказыватьВСпискеВыбора = Истина;
ДанныеСотрудника = Новый Структура("Пользователь, ФизическоеЛицо, ПользовательОС, Фамилия, Имя, Отчество", Справочники.Пользователи.ПустаяСсылка(), ФизическоеЛицо, "");
ЗаполнитьЗначенияСвойств(ДанныеСотрудника, ФизическиеЛицаКлиентСервер.ЧастиИмени(ФизическоеЛицо.Наименование));
НовыйПользователь = СамообслуживаниеСотрудников.НовыйПользователь(ДанныеСотрудника, НастройкиПользователей, НастройкиСообщений);
// Присвоение группы доступа
ГруппаДоступаНовогоПользователя = Справочники.ГруппыДоступа.НайтиПоНаименованию("Сотрудник");
ГруппаДоступаНовогоПользователяОбъект = ГруппаДоступаНовогоПользователя.ПолучитьОбъект();
ГруппаДоступаНовогоПользователяОбъект.Пользователи.Добавить().Пользователь = НовыйПользователь;
ГруппаДоступаНовогоПользователяОбъект.Записать();
Изменение существующего пользователя
Пример изменения уже привязанного «Пользователя ИБ»
НайденыйПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("ИвановИИ");
Если НайденыйПользовательИБ <> Неопределено Тогда
НайденыйПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
НайденыйПользовательИБ.Записать();
КонецЕсли;