#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.ТолькоПростыеРоли Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
СписокРоли, "ИспользуетсяБезОбъектовАдресации", Истина,,Истина);
КонецЕсли;
Если Параметры.БезВнешнихРолей = Истина Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
СписокРоли, "ВнешняяРоль", Ложь);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ИзменениеТекстаЗапросаСпискаДляТекущегоЯзыка(ЭтотОбъект, "СписокРоли");
КонецЕсли;
Если ТипЗнч(Параметры.Исполнитель) = Тип("СправочникСсылка.Пользователи") Тогда
ТекущийЭлемент = Элементы.СписокПользователи;
Элементы.СписокПользователи.ТекущаяСтрока = Параметры.Исполнитель;
ИначеЕсли ТипЗнч(Параметры.Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.Роли;
ТекущийЭлемент = Элементы.СписокРоли;
Элементы.СписокРоли.ТекущаяСтрока = Параметры.Исполнитель;
КонецЕсли;
ПользователиСлужебный.НастроитьПолеНомерКартинкиДинамическогоСписка(СписокПользователи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборРолиИсполнителя") Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
ОповеститьОВыборе(ВыбранноеЗначение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокПользователи
&НаСервереБезКонтекста
Процедура СписокПользователиПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
ПользователиСлужебный.ДинамическийСписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокРоли
&НаКлиенте
Процедура СписокПользователиВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(Значение);
КонецПроцедуры
&НаКлиенте
Процедура СписокРолиВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборРоли(Элемент.ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Выбрать(Команда)
Если Элементы.Страницы.ТекущаяСтраница = Элементы.Пользователи Тогда
ОповеститьОВыборе(Элементы.СписокПользователи.ТекущаяСтрока);
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.Роли Тогда
ВыборРоли(Элементы.СписокРоли.ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ВыборРоли(ТекущиеДанные)
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.ИспользуетсяСОбъектамиАдресации Тогда
ПараметрыФормы = БизнесПроцессыИЗадачиКлиент.ПараметрыФормыВыбораРолиИсполнителя(ТекущиеДанные.Ссылка);
ПараметрыФормы.ВыборОбъектаАдресации = Истина;
БизнесПроцессыИЗадачиКлиент.ОткрытьФормуВыбораРолиИсполнителя(ПараметрыФормы, ЭтотОбъект);
Иначе
ВыбранноеЗначение = Новый Структура("РольИсполнителя, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации",
ТекущиеДанные.Ссылка, Неопределено, Неопределено);
ОповеститьОВыборе(ВыбранноеЗначение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
СписокРоли.УсловноеОформление.Элементы.Очистить();
Элемент = СписокРоли.УсловноеОформление.Элементы.Добавить();
ГруппаЭлементовОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора .ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЕстьИсполнители");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВнешняяРоль");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.РольБезИсполнителей);
КонецПроцедуры
#КонецОбласти