Добавить в гетлисты фильтр по наличию заданий БП по элементу

Рейтинг: 0.6594  
Новая
Предложил Куклин Евгений 01.03.2014 01:53:27

Добавить в гетлисты фильтр по наличию заданий БП по элементу

В сущностях, поддерживающих БП, требуется фильтр для выборки только элементов, по которым у пользователя есть задания.


Поясню, есть какой-нибудь такой список документов (зарезал таблицу, чтоб не перегружать), всего около 5 тысяч. По 30 из них у сотрудника есть задания, но по каким - найти практически невозможно.

Пользоваться списком заданий часто не удобно - он не содержит информации по документам по понятным причинам - это общая сущность, имеющая минимум аналитики, всё, чем можно оперировать - название задания (ограничено 128 знаками) и описание. В них нельзя сделать восприятие информации достаточно структурированным и удобным пользователю.

Тогда как в списке документов конкретного типа всё понятно, отображение нужных колонок настроено пользователем/админом, видно сразу необходимые поля.Хотелось бы просто выставить фильтр - показывать только с заданиями и всё.
Такая реализация часто была бы гораздо удобней списка заданий и заменяла его.

PS. Схожее решение давно есть в инфоблоках, но реализовано только для старых задач на инфоблоках + бп, если кто помнит такие. До сих пор присутствует в коде, хоть и не документировано, так же как и проверки полномочий для бизнес-процессов.

Рейтинг: 0  
Голендухин Олег 04.03.2014 08:05:13
+
Вот-вот, с заданиями та же история, что и с техподдержкой.
Как-то не для пользователей сделано.
Рейтинг: 0  
Куклин Евгений 02.10.2014 13:23:42
Кстати, давно внедрил себе в иблоки:
case "CHECK_BP_TASK_EXISTS":
   if (
      IsModuleInstalled('bizproc')
      && (!empty($val) || $val != "N")
   )
   {
      if ($val == "Y" && is_object($USER))
         $val = intval($USER->GetID());
      else
         $val = intval($val);

      if ($val != 0)
         $arSqlSearch[] = "EXISTS (
            SEL ECT S.DOCUMENT_ID_INT
            FR OM b_bp_workflow_state S
            INNER JOIN b_bp_task T ON S.ID = T.WORKFLOW_ID
            INNER JOIN b_bp_task_user TU ON T.ID = TU.TASK_ID
            WHERE S.DOCUMENT_ID_INT = BE.ID
            AND TU.USER_ID = '".$val."'
         )";
   }
   break; 
плюс допилил фильтры в компонентах.
Люди реально рады такой возможности, списком заданий больше почти никто не пользуется.