Имя: Пароль:
1C
1С v8
Странный запрос типовой конфы на получение задач по БП
0 Steini
 
16.03.16
12:49
Добрый день, господа и дамы.
В типовой конфе "Документооборот" есть функция

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

    Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцессСсылка);        
    Результат = Запрос.Выполнить().Выгрузить();
    
    Возврат Результат;
    
КонецФункции

Не могу никак понять, зачем здесь внутреннее соединение с точками? Почему нельзя просто использовать запрос по задачам, которые не помечены на удаление, у которых БизнесПроцесс = &БизнесПроцесс, ну и в дополнение комбинация флагов на "Отменена", "Завершена" и т.п.?

Подскажите, пожалуйста, неиспользование внутреннего соединения с таблицей точек будет ошибочно при получении списка задач по бизнес-процессу?
1 Steini
 
16.03.16
12:53
Мне кажется, что использование соединения с точками логично только тогда, когда у некоторой задачи в реквизите "БизнесПроцесс" может находиться один БП, а в реквизите "ТочкаМаршрута" - точка маршрута от бизнес-процессов совершенно другого типа. Но такое невозможно же?
2 Cyberhawk
 
16.03.16
13:04
Учти, что в оригинальном запросе идет фильтрация задач еще и по точкам маршрута БП. Карта БП может поменяться, какие-то точки удалят, старые и ненужные задачи останутся.
3 Steini
 
16.03.16
13:14
(2) понятно. Но что же тогда получается, если в режиме конфигуратора изменят карту маршрута, то в базе будут задачи с "битыми" ссылками в реквизите "ТочкаМаршрута"? Немного странно, ну да ладно, спасибо за ответ.
4 Cyberhawk
 
16.03.16
14:06
(3) Да, будет аналог битой ссылки, только визуально это будет не "Объект не найден...", а просто пустое поле
5 Cyberhawk
 
16.03.16
14:07
Сидеть там будет идентификатор объекта метаданных с типом "БизнесПроцессТочкаМаршрутаСсылка.ИмяБП", как и раньше
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан