Записать пользователя сервиса. Создает / обновляет запись пользователя сервиса.
// Создает / обновляет запись пользователя сервиса.
//
// Параметры:
// Пользователь - СправочникСсылка.Пользователи/СправочникОбъект.Пользователи
// СоздатьПользователяСервиса - Булево - Истина - создать нового пользователя
// сервиса, Ложь - обновить существующего.
// ПарольПользователяСервиса - Строка - пароль текущего пользователя
// для доступа к менеджеру сервиса.
//
Процедура ЗаписатьПользователяСервиса(Знач Пользователь, Знач СоздатьПользователяСервиса, Знач ПарольПользователяСервиса) Экспорт
Если Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда
ПользовательОбъект = Пользователь.ПолучитьОбъект();
Иначе
ПользовательОбъект = Пользователь;
КонецЕсли;
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
УстановитьПривилегированныйРежим(Истина);
Прокси = МодульРаботаВМоделиСервиса.ПолучитьПроксиМенеджераСервиса(ПарольПользователяСервиса);
УстановитьПривилегированныйРежим(Ложь);
Если ЗначениеЗаполнено(ПользовательОбъект.ИдентификаторПользователяИБ) Тогда
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательОбъект.ИдентификаторПользователяИБ);
ДоступРазрешен = ПользовательИБ <> Неопределено И Пользователи.ВходВПрограммуРазрешен(ПользовательИБ);
Иначе
ДоступРазрешен = Ложь;
КонецЕсли;
ПользовательСервиса = Прокси.ФабрикаXDTO.Создать(
Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/ApplicationUsers", "User"));
ПользовательСервиса.Zone = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
ПользовательСервиса.UserServiceID = ПользовательОбъект.ИдентификаторПользователяСервиса;
ПользовательСервиса.FullName = ПользовательОбъект.Наименование;
ПользовательСервиса.Name = ПользовательИБ.Имя;
ПользовательСервиса.StoredPasswordValue = ПользовательИБ.СохраняемоеЗначениеПароля;
ПользовательСервиса.Language = ПолучитьКодЯзыка(ПользовательИБ.Язык);
ПользовательСервиса.Access = ДоступРазрешен;
ПользовательСервиса.AdmininstrativeAccess = ДоступРазрешен И ПользовательИБ.Роли.Содержит(Метаданные.Роли.ПолныеПрава);
КонтактнаяИнформация = Прокси.ФабрикаXDTO.Создать(
Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/ApplicationUsers", "ContactsList"));
ТипЗаписьКИ = Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/ApplicationUsers", "ContactsItem");
СоответствиеВидовКИ = МодульРаботаВМоделиСервиса.СоответствиеВидовКИПользователяXDTO();
Для каждого СтрокаКИ Из ПользовательОбъект.КонтактнаяИнформация Цикл
ВидКИXDTO = СоответствиеВидовКИ.Получить(СтрокаКИ.Вид);
Если ВидКИXDTO = Неопределено Тогда
Продолжить;
КонецЕсли;
ЗаписьКИ = Прокси.ФабрикаXDTO.Создать(ТипЗаписьКИ);
ЗаписьКИ.ContactType = ВидКИXDTO;
ЗаписьКИ.Value = СтрокаКИ.Представление;
ЗаписьКИ.Parts = СтрокаКИ.ЗначенияПолей;
КонтактнаяИнформация.Item.Добавить(ЗаписьКИ);
КонецЦикла;
ПользовательСервиса.Contacts = КонтактнаяИнформация;
ИнформацияОбОшибке = Неопределено;
Если СоздатьПользователяСервиса Тогда
Прокси.CreateUser(ПользовательСервиса, ИнформацияОбОшибке);
ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке, "CreateUser");
Иначе
Прокси.UpdateUser(ПользовательСервиса, ИнформацияОбОшибке);
ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке, "UpdateUser");
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗаписатьСведенияОПользователе (БСП)
ПолучитьПользователейСервиса (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)