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