...Человеческий поиск в разработке...
- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/project/provider.php
- Класс: BitrixTasksInternalsProjectProvider
- Вызов: Provider::getPrimaryProjectsQuery
public function getPrimaryProjectsQuery(array $select): Query { $query = WorkgroupTable::query(); $query ->setSelect($this->prepareQuerySelect($select)) ->registerRuntimeField( new Reference( 'CONTEXT_RELATION', UserToGroupTable::getEntity(), Join::on('this.ID', 'ref.GROUP_ID')->where('ref.USER_ID', $this->userId), ['join_type' => 'left'] ) ) ->registerRuntimeField( 'PLA', new ReferenceField( 'PLA', ProjectLastActivityTable::getEntity(), Join::on('this.ID', 'ref.PROJECT_ID'), ['join_type' => 'left'] ) ) ->registerRuntimeField( null, new ExpressionField('ACTIVITY_DATE', 'IFNULL(%s, %s)', ['PLA.ACTIVITY_DATE', 'DATE_UPDATE']) ) ->registerRuntimeField( new Reference( 'SITE', WorkgroupSiteTable::getEntity(), Join::on('this.ID', 'ref.GROUP_ID'), ['join_type' => 'inner'] ) ) ->registerRuntimeField( 'SCRUM', new BitrixMainORMFieldsExpressionField( 'SCRUM', "(CASE WHEN %s = 'Y' AND %s > 0 THEN 'Y' ELSE 'N' END)", ['PROJECT', 'SCRUM_MASTER_ID'] ) ) ->registerRuntimeField( new Reference( 'FAVORITES', WorkgroupFavoritesTable::getEntity(), Join::on('this.ID', 'ref.GROUP_ID')->where('ref.USER_ID', $this->userId), ['join_type' => 'left'] ) ) ->registerRuntimeField( new Reference( 'PIN', WorkgroupPinTable::getEntity(), Join::on('this.ID', 'ref.GROUP_ID') ->where('ref.USER_ID', $this->userId) ->where('ref.CONTEXT', $this->mode) , ['join_type' => 'left'] ) ) ->registerRuntimeField( 'IS_PINNED', new ExpressionField( 'IS_PINNED', WorkgroupPinTable::getSelectExpression(), ['ID', 'PIN.USER_ID', 'PIN.CONTEXT'] ) ) ; $this->runtimeFieldsManager->add('CONTEXT_RELATION'); $this->runtimeFieldsManager->add('SITE'); $this->runtimeFieldsManager->add('SCRUM'); $this->runtimeFieldsManager->add('FAVORITES'); $this->runtimeFieldsManager->add('PIN'); $this->runtimeFieldsManager->add('IS_PINNED'); return $query; }