Имя: Пароль:
1C
1С v8
Выборочное удаление получателей
0 baziza
 
19.10.15
11:46
Всем добрый!
Есть функция, возвращающая таблицу получателей уведомления. Результатом запроса является таблица с колонками ВидПолучателя (Автор, Куратор, Исполнитель, РольИсполнителя) и Получатель (само ФИО получателя):

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


  Проблема в том, что рассылка происходит и уволенным сотрудникам (в справочнике уволенные сотрудники помечены буквой "ъ" перед ФИО). Помогите дополнить функцию исключением таких получателей. Как я понимаю, это можно реализовать с помощью условия, аля если имя получателя начинается на "ъ", тогда исключаем его из таблицы получателей.
Надеюсь вопрос расписал понятно, всем спасибо за внимание)
1 mikecool
 
19.10.15
11:48
(0) все правильно написал, делай
2 baziza
 
19.10.15
12:06
А в самом запросе сразу можно исключить уволенных?
3 ibreiter
 
19.10.15
12:13
Можно.
Условие подобно сделать
4 baziza
 
19.10.15
12:26
Добавил в конце запроса:

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТИсключитьУволенных.ВидПолучателя,
    ВТИсключитьУволенных.Получатель
ИЗ
    ВТИсключитьУволенных КАК ВТИсключитьУволенных
ГДЕ
    НЕ ВТИсключитьУволенных.Получатель.Наименование ПОДОБНО "ъ%"


Вроде есть желаемый результат.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший