По своей сути данная возможность нужна только для решения задач по Бизнес-процессам и по нескольким задачам по Управляемым формам на экзамене 1С Специалист по платформе 8.3.
Главным связующим звеном между пользователями информационной базы и справочником Сотрудники (ФизическиеЛица) являются Параметры Сеанса.
Соответственно, первым делом нужно создать этот параметр и связать его со Справочником.

Следующим этапом нужно создать хотя бы одну роль, но она должна быть с полными правами.

Дальше необходимо сохранить конфигурацию и создать хотя бы одного пользователя, присвоив ему роль со всеми правами.

Теперь осталось открыть модуль сеанса и написать следующий код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; ФизЛицо = Справочники.ФизическиеЛица.НайтиПоКоду(ТекущийПользователь); Если ФизЛицо.Пустая() Тогда НовыйСотрудник = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовыйСотрудник.Код = ТекущийПользователь; НовыйСотрудник.Наименование = ТекущийПользователь; НовыйСотрудник.Записать(); ФизЛицо = НовыйСотрудник.Ссылка; КонецЕсли; ПараметрыСеанса.ТекущийПользователь = ФизЛицо; КонецПроцедуры |
Так как вся эта затея нужна только для экзамена 1С Специалист по платформе, то в данном случае связывается Текущий пользователь со Справочником ФизическиеЛица, где создатели Каркасной конфигурации любезно для каждого заведенного Физического лица прописали в качестве Кода — Наименование этого физического лица.
Конечно, по-хорошему, так связь делать нельзя, т.к. при изменении кода элемента Справочника ФизическиеЛица, будет создаваться новый элемент Справочника.
Лучше делать связь по Уникальному идентификатору, который создаётся для каждого пользователя Информационной базы. Для этого нужно в Справочнике Физические лица создать реквизит, у которого будет тип — Уникальный идентификатор, и при входе пользователя уже делать поиск не по коду, а по Уникальному идентификатору.

Примерный код будет такой:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) //Если пользователь создан в Конфигураторе, то ищем его в Справочнике ФизическиеЛица, и если не нашли, то создаём нового сотрудника в справочнике //Получаем Уникальный Идентификатор пользователя информационной базы ТекущийПользовательУИ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор; //Получаем Имя пользователя информационной базы ТекущийПользовательИмя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; //Запрос на поиск Пользователя по Уникальному Идентификатору в Справочнике ФизическиеЛица Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ФизическиеЛица.Ссылка КАК Ссылка |ИЗ | Справочник.ФизическиеЛица КАК ФизическиеЛица |ГДЕ | ФизическиеЛица.УникальныйИдентификатор = &ТекущийПользовательУИ"; Запрос.УстановитьПараметр("ТекущийПользовательУИ", ТекущийПользовательУИ); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда //Создается новое Физическое лицо в Справочнике НовыйСотрудник = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовыйСотрудник.УникальныйИдентификатор = ТекущийПользовательУИ; НовыйСотрудник.Наименование = ТекущийПользовательИмя; НовыйСотрудник.Записать(); ТекущийПользователь = НовыйСотрудник.Ссылка; Иначе Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); ТекущийПользователь = Выборка.Ссылка; КонецЕсли; //Присваиваем Параметру сеанса ТекущийПользователь ссылку на элемент Справочника ФизическиеЛица ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь; КонецПроцедуры |
Дальше можно сделать так, что при создании элемента справочника ФизическиеЛица в пользовательском режиме, автоматически создавался пользователь информационной базы. И это можно сделать следующим образом:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) //Если элемент создан в Пользовательском режиме, то создаём пользователя информационной базы Если НЕ ЗначениеЗаполнено(ТекущийОбъект.Ссылка) Тогда НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя(); НовыйПользователь.Имя = ТекущийОбъект.Наименование; НовыйПользователь.АутентификацияСтандартная = Истина; НовыйПользователь.Пароль = ""; //Обязательно нужно добавить роль. Иначе под новым пользователем не войдешь НовыйПользователь.Роли.Добавить(Метаданные.Роли.ВсеПрава); НовыйПользователь.Записать(); //Присваиваем Уникальный идентификатор новому Физическому лицу в Справочнике ТекущийОбъект.УникальныйИдентификатор = НовыйПользователь.УникальныйИдентификатор; КонецЕсли; КонецПроцедуры |
