ЗаписатьПользователяСервиса (БСП)

Автор: 1С
ОбщийМодуль.ПользователиСлужебныйВМоделиСервиса
БСП

Записать пользователя сервиса. Создает / обновляет запись пользователя сервиса.

// Создает / обновляет запись пользователя сервиса.
// 
// Параметры:
//  Пользователь - СправочникСсылка.Пользователи/СправочникОбъект.Пользователи
//  СоздатьПользователяСервиса - Булево - Истина - создать нового пользователя
//   сервиса, Ложь - обновить существующего.
//  ПарольПользователяСервиса - Строка - пароль текущего пользователя
//   для доступа к менеджеру сервиса.
//
Процедура ЗаписатьПользователяСервиса(Знач Пользователь, Знач СоздатьПользователяСервиса, Знач ПарольПользователяСервиса) Экспорт
	
	Если Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда
		ПользовательОбъект = Пользователь.ПолучитьОбъект();
	Иначе
		ПользовательОбъект = Пользователь;
	КонецЕсли;
	
	МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
	
	УстановитьПривилегированныйРежим(Истина);
	Прокси = МодульРаботаВМоделиСервиса.ПолучитьПроксиМенеджераСервиса(ПарольПользователяСервиса);
	УстановитьПривилегированныйРежим(Ложь);
	
	Если ЗначениеЗаполнено(ПользовательОбъект.ИдентификаторПользователяИБ) Тогда
		ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательОбъект.ИдентификаторПользователяИБ);
		ДоступРазрешен = ПользовательИБ <> Неопределено И Пользователи.ВходВПрограммуРазрешен(ПользовательИБ);
	Иначе
		ДоступРазрешен = Ложь;
	КонецЕсли;
	
	ПользовательСервиса = Прокси.Фабрика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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПользователиСервиса (БСП)

ЗаписатьСведенияОПользователе (БСП)

ПолучитьПользователейСервиса (БСП)

ИмяСлужебногоПользователяМенеджераСервиса (БСП)

ПарольСлужебногоПользователяМенеджераСервиса (БСП)

TurboConf 6 - расширение Конфигуратора 1С