...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/synchronizeentitycountabledataagent.php
- Класс: Bitrix\Crm\Agent\Activity\SynchronizeEntityCountableDataAgent
- Вызов: SynchronizeEntityCountableDataAgent::getUncompletedActivityList
private function getUncompletedActivityList(int $lastId, int $limit): array { $uncompletedActivities = EntityUncompletedActivityTable::query() ->setSelect([ 'ID', 'ACTIVITY_ID', 'ENTITY_TYPE_ID', 'ENTITY_ID', 'RESPONSIBLE_ID', 'MIN_DEADLINE', ]) ->where('ID', '>', $lastId) ->setLimit($limit) ->setOrder(['ID' => 'ASC']) ->fetchAll() ; $activitiesIds = array_column($uncompletedActivities, 'ACTIVITY_ID'); if (empty($activitiesIds)) { return []; } $activitiesIds = array_unique($activitiesIds); $activitiesData = []; $activitiesDeadlinesIterator = ActivityTable::query() ->whereIn('ID', $activitiesIds) ->setSelect(['COMPLETED', 'ID', 'DEADLINE']) ->exec(); while ($activity = $activitiesDeadlinesIterator->fetch()) { $activitiesData[$activity['ID']] = [ 'COMPLETED' => ($activity['COMPLETED'] === 'Y'), 'DEADLINE' => $activity['DEADLINE'], ]; } foreach ($uncompletedActivities as $i => $uncompletedActivity) { $uncompletedActivities[$i]['COMPLETED'] = (bool)$activitiesData[$uncompletedActivity['ACTIVITY_ID']]['COMPLETED']; $uncompletedActivities[$i]['DELETED'] = !array_key_exists($uncompletedActivity['ACTIVITY_ID'], $activitiesData); $uncompletedActivities[$i]['REAL_DEADLINE'] = $activitiesData[$uncompletedActivity['ACTIVITY_ID']]['DEADLINE'] ?? $uncompletedActivity['MIN_DEADLINE']; } return $uncompletedActivities; }