DeleteUnactualUncompletedActivitiesAgent::execute

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. DeleteUnactualUncompletedActivitiesAgent
  4. execute
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/deleteunactualuncompletedactivitiesagent.php
  • Класс: Bitrix\Crm\Agent\Activity\DeleteUnactualUncompletedActivitiesAgent
  • Вызов: DeleteUnactualUncompletedActivitiesAgent::execute
public function execute(array &$result)
{
	if (Option::get('crm', 'enable_entity_countable_act', 'Y') !== 'Y')
	{
		return self::CONTINUE_EXECUTION; // wait ProcessEntityCountableActivitiesAgent to finish
	}
	if (Option::get('crm', 'enable_any_incoming_act', 'Y') !== 'Y')
	{
		return self::CONTINUE_EXECUTION; // wait SynchronizeUncompletedActivityDataAgent to finish
	}

	$result['steps'] = (int)($result['steps'] ?? 0);

	$limit = $this->getLimit();
	$processedCount = 0;

	$ids = array_column(
		EntityUncompletedActivityTable::query()
			->setSelect([
				'ID'
			])
			->registerRuntimeField(
				'',
				new ReferenceField('A',
					ActivityTable::getEntity(),
					(new ConditionTree())
						->whereColumn('ref.ID', 'this.ACTIVITY_ID')
					,
					['join_type' => Join::TYPE_LEFT]
				)
			)
			->setLimit($limit)
			->whereNull('A.ID')
			->setOrder(['ID' => 'ASC'])
			->fetchAll(),
		'ID'
	);
	if (empty($ids))
	{
		return self::FINISH_EXECUTION;
	}
	foreach ($ids as $id)
	{
		EntityUncompletedActivityTable::delete($id);
		$result['steps']++;
		$processedCount++;
	}

	if ($processedCount < $limit)
	{
		return self::FINISH_EXECUTION;
	}

	return self::CONTINUE_EXECUTION;
}

Добавить комментарий