...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/lightcounter/filllightcounterpart1.php
- Класс: Bitrix\Crm\Agent\Activity\LightCounter\FillLightCounterPart1
- Вызов: FillLightCounterPart1::queryUncompletedActivitiesToProcess
private function queryUncompletedActivitiesToProcess(int $lastId): array { $activitiesIds = ActivityTable::query() ->setSelect(['ID']) ->where('ID', '>', $lastId) ->where('COMPLETED', '=', 'N') ->setOrder(['ID' => 'ASC']) ->setLimit(self::BATCH_SIZE) ->fetchAll(); if (empty($activitiesIds)) { return []; } $activitiesIds = array_column($activitiesIds, 'ID'); $activities = ActivityTable::query() ->setSelect(['ID', 'NOTIFY_TYPE', 'NOTIFY_VALUE', 'DEADLINE']) ->whereIn('ID', $activitiesIds) ->fetchAll(); $offsets = ActivityPingOffsetsTable::query() ->addSelect('ACTIVITY_ID') ->addSelect('MAX_OFFSET') ->registerRuntimeField('', new ExpressionField('MAX_OFFSET', 'MAX(OFFSET)')) ->whereIn('ACTIVITY_ID', $activitiesIds) ->setGroup('ACTIVITY_ID') ->fetchAll(); $offsetKeyVal = []; foreach ($offsets as $offset) { $offsetKeyVal[$offset['ACTIVITY_ID']] = $offset['MAX_OFFSET']; } foreach ($activities as &$activity) { $activity['MAX_OFFSET'] = $offsetKeyVal[$activity['ID']] ?? null; } return $activities; }