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