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