Давно так не радовался возможностям API, которые случайно откопал.
Как выбрать задачи, где вы ответственный?
'RESPONSIBLE_ID' => $USER->GetID(), |
А где соисполнитель?
'ACCOMPLICE' => $USER->GetID(), |
А и те и те? А вот тут случился затык. Документация скудна, пришлось лезть в ядро. Оказывается, логика OR есть в фильтре. Вот как это выглядит:
$arFilter = array(
'::LOGIC' => 'AND',
'CHECK_PERMISSIONS' => 'Y',
'ONLY_ROOT_TASKS' => 'Y',
'SAME_GROUP_PARENT' => 'Y',
'::SUBFILTER-1' => array(
'::LOGIC' => 'OR',
'::SUBFILTER-1' => array(
'ACCOMPLICE' => $USER->GetID(),
'REAL_STATUS' => array(CTasks::STATE_NEW, CTasks::STATE_PENDING, CTasks::STATE_IN_PROGRESS),
),
'::SUBFILTER-2' => array(
'RESPONSIBLE_ID' => $USER->GetID(),
'REAL_STATUS' => array(CTasks::STATE_NEW, CTasks::STATE_PENDING, CTasks::STATE_IN_PROGRESS),
),
),
); |
А вот так в компонент bitrix:tasks.list можно передать кастомный фильтр:
Тем самым создав любую логику для стандартного компонента задач.