• Модуль: 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;
}