• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/duplicate/background/merge.php
  • Класс: Bitrix\Crm\Agent\Duplicate\Background\Merge
  • Вызов: Merge::onPendingStart
protected function onPendingStart(array $progressData): bool
{
	/** @var IndexRebuild $indexAgentClassName */
	$indexAgentClassName = $this->getIndexAgentClassName();
	$indexAgent = $indexAgentClassName::getInstance($this->getUserId());

	if ($indexAgent->isActive())
	{
		return $this->setError($progressData, static::ERR_ON_START_INDEX_AGENT_ACTIVE);
	}

	$indexAgentState = $indexAgent->state()->getData();

	if ($indexAgentState['STATUS'] !== static::STATUS_FINISHED)
	{
		return $this->setError($progressData, static::ERR_ON_START_INDEX_AGENT_IS_NOT_FINISHED);
	}

	if (!isset($indexAgentState['FOUND_ITEMS']) || $indexAgentState['FOUND_ITEMS'] <= 0)
	{
		return $this->setError($progressData, static::ERR_ON_START_INDEX_AGENT_NOT_FOUND_ITEMS);
	}

	$progressData['FOUND_ITEMS'] = $indexAgentState['FOUND_ITEMS'];
	$progressData['MERGED_ITEMS'] = 0;
	$progressData['CONFLICTED_ITEMS'] = 0;
	$progressData['PROCESSED_ITEMS'] = 0;
	$progressData['TOTAL_ITEMS'] = 0;

	$timestamp = time();

	$progressData['STATUS'] = static::STATUS_RUNNING;
	$progressData['TIMESTAMP_START'] = $timestamp;
	$progressData['TIMESTAMP_HALF'] = 0;
	$progressData['TIMESTAMP_FINISH'] = 0;
	$progressData['TIMESTAMP'] = $timestamp;
	$this->setProgressData($progressData);

	return true;
}