Битрикс24: кейс – группировка задач по исполнителю

Одним из наших иностранных заказчиков было высказано пожелание – иметь возможность группировать список задач по исполнителям, с возможностью смены ответственного простым перетаскиванием задачи в нужную группу.  Портал у них – коробочный, так что возможность таких изменений имеется. Да, в Битриксе есть сортировка по исполнителю, есть фильтрация по исполнителям – но оба варианта заказчика не устраивали, хотел именно группировку по исполнителю как некий «надуровень».

Первым делом – копируем компонент (tasks.list) в собственное пространство имен. В коде компонента (файл component.php) находим место – отвечающее за формирование сортировки данных. По коду хорошо видно, что сортировка находится в массиве $arOrders. Находим место, где он окончательно сформирован, и вставляем принудительно сортировку по исполнителю первой по порядку:

К нашему удивлению, при такой сортировке задачи нескольких исполнителей «перемешивались» друг с другом. У большинства все было как надо, но задачи нескольких исполнителей – шли «вперемешку». Стали копать подробнее API  – оказалось, что в методе CTask::GetList при формировании сортировки, есть вот такой замечательный код:

Значит, при запросе сортировки по идентификатору исполнителя (колонка с ид исполнителя есть в таблице b_tasks, возможность сортировать по ней – имеется) – Битрикс вместо этого сортирует по фамилии исполнителя. При этом никак не учтен тот факт, что фамилия может и не задаваться вовсе. У нас как раз такой случай. У всех исполнителей, у которых «смешивались» задачи – не была задана фамилия.

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

Полученную информацию добавляем в массив $arResult – теперь мы можем работать с ней в шаблонах компонента.

В стандарте, компонент списка задач имеет два представления: вид списком и диаграмма Гантта. Соответственно изменять необходимо оба. В них уже есть группировка по проектам. Заказчик хочет сделать такую же группировку, но на уровень выше и по исполнителям. Начнем с простого списка.

Идем в его шаблон (template.php). Изучаем его логику. Находим место формирования группировки проектов. Копируем его и переделываем под формирование группировки исполнителей.  Переписываем JS-скрипт, который отвечает за сворачивание-разворачивание группы. На выходе получаем такой вид:

Группировка задач по пользователю в Битрикс24

У диаграммы Ганта – много JS скриптов, отвечающих за перенос задач, создание новых и т.п. Все их рассматривать нет смысла. Покажем только конечный результат:
Группировка задач по исполнителю в диаграмме ганта в Битрикс24

Об авторе:

Сертифицированный Битрикс-разработчик. Ведущий программист Студии Юлии Бедросовой.

bedrosova3

Подпишитесь на рассылку!

Fields marked with an * are required

Комментарии

 

Комментировать

 

Подписаться на рассылку:

Fields marked with an * are required