• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/synccountabledataagent.php
  • Класс: Bitrix\Crm\Agent\Activity\SyncCountableDataAgent
  • Вызов: SyncCountableDataAgent::processCountableActivities
private function processCountableActivities(array $result): array
{
	$limit = $this->getLimit();
	$lastId = ($result['lastEntityCountableActId'] ?? 0);
	$processedCount = 0;

	$activities = $this->getCountableActivityList($lastId, $limit);
	foreach ($activities as $activity)
	{
		$lastId = (int)$activity['ID'];
		$result['steps']++;
		$processedCount++;

		$activityId = (int)$activity['ID'];
		if ($activity['COMPLETED'] || $activity['DELETED'])
		{
			EntityCountableActivityTable::deleteByActivity($activityId);

			$bindings = \CCrmActivity::GetBindings($activityId);
			foreach ($bindings as $binding)
			{
				$ownerTypeId = (int)$binding['OWNER_TYPE_ID'];
				$ownerId = (int)$binding['OWNER_ID'];
				$this->resetCounterByEntity($ownerTypeId, $ownerId);
			}
		}
		else
		{
			$this->synchronizeActivityData($activity);
		}
	}

	$result['lastEntityCountableActId'] = $lastId;

	if ($processedCount < $limit)
	{
		$result['currentStep'] = self::STEP_COUNTABLE_ENTITIES;
	}

	return $result;
}