• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatemanager.php
  • Класс: Bitrix\Crm\Integrity\DuplicateManager
  • Вызов: DuplicateManager::createCriterion
static function createCriterion($typeID, array $matches)
{
	if(!is_int($typeID))
	{
		$typeID = (int)$typeID;
	}

	if ($typeID === DuplicateIndexType::PERSON)
	{
		return DuplicatePersonCriterion::createFromMatches($matches);
	}
	elseif ($typeID === DuplicateIndexType::ORGANIZATION)
	{
		return DuplicateOrganizationCriterion::createFromMatches($matches);
	}
	elseif (
		$typeID === DuplicateIndexType::COMMUNICATION_PHONE
		|| $typeID === DuplicateIndexType::COMMUNICATION_EMAIL
		|| $typeID === DuplicateIndexType::COMMUNICATION_SLUSER
	)
	{
		if (!isset($matches['TYPE']))
		{
			$matches['TYPE'] = Type::PHONE_NAME;

			if ($typeID === DuplicateIndexType::COMMUNICATION_PHONE)
			{
				$matches['TYPE'] = Type::PHONE_NAME;
			}
			elseif ($typeID === DuplicateIndexType::COMMUNICATION_EMAIL)
			{
				$matches['TYPE'] = Type::EMAIL_NAME;
			}
			elseif ($typeID === DuplicateIndexType::COMMUNICATION_SLUSER)
			{
				$matches['TYPE'] = Type::SLUSER_NAME;
			}
		}

		return DuplicateCommunicationCriterion::createFromMatches($matches);
	}
	elseif(($typeID & DuplicateIndexType::REQUISITE) === $typeID)
	{
		return DuplicateRequisiteCriterion::createFromMatches($matches);
	}
	elseif(($typeID & DuplicateIndexType::BANK_DETAIL) === $typeID)
	{
		return DuplicateBankDetailCriterion::createFromMatches($matches);
	}
	else
	{
		foreach (DuplicateVolatileCriterion::getAllSupportedDedupeTypes() as $volatileTypeId)
		{
			if (($typeID & $volatileTypeId) === $typeID)
			{
				return DuplicateVolatileCriterion::createFromMatches($matches);
			}
		}
	}

	throw new Main\NotSupportedException(
		"Criterion type(s): '"
		. DuplicateIndexType::resolveName($typeID)
		. "' is not supported in current context"
	);
}