Формирование сообщения пользователю. Формирует сообщение о результатах переноса пользователя.
// Формирует сообщение о результатах переноса пользователя.
//
// Параметры:
// МассивПользователей - Массив - пользователи, которых нужно перенести в новую группу.
// ГруппаПриемник - СправочникСсылка.ГруппыПользователей - группа, в которую переносятся
// пользователи.
// Перемещение - Булево - если Истина, то пользователь удаляется из старой группы.
// МассивНеПеремещенныхПользователей - Массив - пользователи, которых не удалось переместить в группу.
// ГруппаИсточник - СправочникСсылка.ГруппыПользователей - группа, из которой происходит
// перенос пользователей.
//
// ВозвращаемоеЗначение:
// Строка - Сообщение пользователю.
//
Функция ФормированиеСообщенияПользователю(МассивПользователей, ГруппаПриемник,
Перемещение, МассивНеПеремещенныхПользователей, ГруппаИсточник = Неопределено) Экспорт
КоличествоПользователей = МассивПользователей.Количество();
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаПриемник, "Наименование");
СообщениеПользователю = Неопределено;
КоличествоНеПеремещенныхПользователей = МассивНеПеремещенныхПользователей.Количество();
УведомлениеПользователя = Новый Структура;
УведомлениеПользователя.Вставить("Сообщение");
УведомлениеПользователя.Вставить("ЕстьОшибки");
УведомлениеПользователя.Вставить("Пользователи");
Если КоличествоНеПеремещенныхПользователей > 0 Тогда
СвойстваГруппыПриемника = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ГруппаПриемник, "Назначение, Наименование");
НаименованиеГруппы = СвойстваГруппыПриемника.Наименование;
НазначениеГруппыВнешнихПользователей = СвойстваГруппыПриемника.Назначение.Выгрузить();
МассивПредставлений = Новый Массив;
Для Каждого СтрокаНазначения Из НазначениеГруппыВнешнихПользователей Цикл
МассивПредставлений.Добавить(НРег(Метаданные.НайтиПоТипу(
ТипЗнч(СтрокаНазначения.ТипПользователей)).Синоним));
КонецЦикла;
ПредставлениеТипаОбъектаАвторизации = СтрСоединить(МассивПредставлений, ", ");
Если КоличествоНеПеремещенныхПользователей = 1 Тогда
СвойстваНеПеремещенногоПользователя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
МассивНеПеремещенныхПользователей[0], "Наименование, ОбъектАвторизации");
Предмет = СвойстваНеПеремещенногоПользователя.Наименование;
ТипВнешнегоПользователя = ТипЗнч(СвойстваНеПеремещенногоПользователя.ОбъектАвторизации);
ОписаниеТипаСсылки = Новый ОписаниеТипов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ТипВнешнегоПользователя));
Значение = ОписаниеТипаСсылки.ПривестиЗначение(Неопределено);
Отбор = Новый Структура("ТипПользователей", Значение);
ТипПользователяСовпадаетСГруппой = (НазначениеГруппыВнешнихПользователей.НайтиСтроки(Отбор).Количество() = 1);
УведомлениеПользователя.Пользователи = Неопределено;
Если ТипПользователяСовпадаетСГруппой Тогда
СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Пользователь ""%1"" не может быть включен в группу ""%2"",
|т.к. у группы стоит признак ""Все пользователи заданного типа"".'"),
Предмет, НаименованиеГруппы) + Символы.ПС;
Иначе
СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Пользователь ""%1"" не может быть включен в группу ""%2"",
|т.к. в состав ее участников входят только %3.'"),
Предмет, НаименованиеГруппы, ПредставлениеТипаОбъектаАвторизации) + Символы.ПС;
КонецЕсли;
Иначе
УведомлениеПользователя.Пользователи = СтрСоединить(МассивНеПеремещенныхПользователей, Символы.ПС);
СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не все пользователи могут быть включены в группу ""%1"",
|т.к. в состав ее участников входят только %2
|или у группы стоит признак ""Все пользователи заданного типа"".'"),
НаименованиеГруппы,
ПредставлениеТипаОбъектаАвторизации);
КонецЕсли;
УведомлениеПользователя.Сообщение = СообщениеПользователю;
УведомлениеПользователя.ЕстьОшибки = Истина;
Возврат УведомлениеПользователя;
КонецЕсли;
Если КоличествоПользователей = 1 Тогда
СтрокаОбъект = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(МассивПользователей[0], "Наименование");
Если ГруппаПриемник = Справочники.ГруппыПользователей.ВсеПользователи
Или ГруппаПриемник = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда
СтрокаДействие = НСтр("ru = 'исключен из группы'");
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаИсточник, "Наименование");
ИначеЕсли Перемещение Тогда
СтрокаДействие = НСтр("ru = 'перемещен в группу'");
Иначе
СтрокаДействие = НСтр("ru = 'включен в группу'");
КонецЕсли;
СообщениеПользователю = НСтр("ru = '""%1"" %2 ""%3""'");
ИначеЕсли КоличествоПользователей > 1 Тогда
СтрокаОбъект = Формат(КоличествоПользователей, "ЧДЦ=0") + " "
+ ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(КоличествоПользователей,
"", НСтр("ru = 'пользователь,пользователя,пользователей,,,,,,0'"));
Если ГруппаПриемник = Справочники.ГруппыПользователей.ВсеПользователи Тогда
СтрокаДействие = НСтр("ru = 'исключены из группы'");
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаИсточник, "Наименование");
ИначеЕсли Перемещение Тогда
СтрокаДействие = НСтр("ru = 'перемещены в группу'");
Иначе
СтрокаДействие = НСтр("ru = 'включены в группу'");
КонецЕсли;
СообщениеПользователю = НСтр("ru = '%1 %2 ""%3""'");
КонецЕсли;
Если СообщениеПользователю <> Неопределено Тогда
СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеПользователю,
СтрокаОбъект, СтрокаДействие, НаименованиеГруппы);
КонецЕсли;
УведомлениеПользователя.Сообщение = СообщениеПользователю;
УведомлениеПользователя.ЕстьОшибки = Ложь;
Возврат УведомлениеПользователя;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПриФормированииСообщения (БСП)
СобытиеЖурналаРегистрации (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)