• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/uncompletedactivity.php
  • Класс: Bitrix\Crm\Activity\UncompletedActivity
  • Вызов: UncompletedActivity::getUncompletedActivity
private function getUncompletedActivity(): ?array
{
	$filter = $this->prepareUncompletedActivityFilter();

	$explicitDeadlineFilter = $filter;
	$explicitDeadlineFilter['!=DEADLINE'] = null;

	$firstUncompletedActivityWithExplicitDeadline = \CCrmActivity::GetList(
		[
			'DEADLINE' => 'ASC',
		],
		$explicitDeadlineFilter,
		false,
		['nTopCount' => 1],
		[
			'ID',
			'DEADLINE'
		]
	)->Fetch();

	if ($firstUncompletedActivityWithExplicitDeadline)
	{
		return $firstUncompletedActivityWithExplicitDeadline;
	}

	/*
	 * at this point there are either activities with DEADLINE === null or no activities at all.
	 * if an activity has DEADLINE === null, it's essentially means that its deadline is \CCrmDateTimeHelper::GetMaxDatabaseDate().
	 * so simply fetch the most recent activity, if it exists. DEADLINE for all of them is going be the same.
	 */
	$lastUncompletedActivity = \CCrmActivity::GetList(
		[
			'CREATED' => 'DESC',
		],
		$filter,
		false,
		['nTopCount' => 1],
		[
			'ID',
			'DEADLINE'
		]
	)->Fetch();

	return $lastUncompletedActivity ? $lastUncompletedActivity : null;
}