- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
- Класс: CTasks
- Вызов: CTasks::getFilterOptionsFromRoleField
static function getFilterOptionsFromRoleField($role)
{
$fields = [];
$filters = [];
$key = 'ROLE_';
$roleType = static::getRoleFieldType($role);
$userId = ($role[($roleType === 'MEMBER' ? '' : '=') . $roleType] ?? null);
$referenceFilter = Query::filter()
->whereColumn('ref.TASK_ID', 'this.ID')
->where('ref.USER_ID', $userId);
switch ($roleType)
{
case 'MEMBER':
$fields[$key . $roleType] = static::getMemberTableReferenceField($referenceFilter);
break;
case 'CREATED_BY':
case 'RESPONSIBLE_ID':
case 'ACCOMPLICE':
case 'AUDITOR':
$map = [
'CREATED_BY' => 'O',
'RESPONSIBLE_ID' => 'R',
'ACCOMPLICE' => 'A',
'AUDITOR' => 'U',
];
$referenceFilter->where('ref.TYPE', $map[$roleType]);
$fields[$key . $roleType] = static::getMemberTableReferenceField($referenceFilter);
if ($roleType == 'CREATED_BY')
{
$filters[$key . $roleType] = Query::filter()->whereColumn('CREATED_BY', '!=', 'RESPONSIBLE_ID');
}
break;
}
return [
'FIELDS' => $fields,
'FILTERS' => $filters,
];
}