• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatepersonmatchcode.php
  • Класс: Bitrix\Crm\Integrity\DuplicatePersonMatchCodeTable
  • Вызов: DuplicatePersonMatchCodeTable::calculateDuplicateCount
static function calculateDuplicateCount(array $parameters)
{
	$connection = \Bitrix\Main\Application::getConnection();

	$filterSql = '';
	if(isset($parameters['ENTITY_TYPE_ID']))
	{
		$entityTypeID = intval($parameters['ENTITY_TYPE_ID']);
		$filterSql = "ENTITY_TYPE_ID = $entityTypeID";
	}

	if(isset($parameters['PERMISSION_SQL']))
	{
		$permissionSql = $parameters['PERMISSION_SQL'];
		if(is_string($permissionSql) && $permissionSql !== '')
		{
			if($filterSql !== '')
			{
				$filterSql .= ' AND ';
			}
			$filterSql .= "ENTITY_ID IN({$permissionSql})";
		}
	}

	$subquerySql= $filterSql !== ''
		? "SELECT LAST_NAME FROM b_crm_dp_prsn_mcd WHERE {$filterSql} GROUP BY LAST_NAME HAVING COUNT(LAST_NAME) > 1"
		: "SELECT LAST_NAME FROM b_crm_dp_prsn_mcd GROUP BY LAST_NAME HAVING COUNT(LAST_NAME) > 1";

	$result = $connection->query("SELECT COUNT(*) AS CNT FROM ({$subquerySql}) t");
	$fields = $result->fetch();
	return is_array($fields) ? intval($fields['CNT']) : 0;
}