$fieldNames = array(); if ($enableDupCtrlByPerson) { $fieldNames[] = 'NAME'; $fieldNames[] = 'SECOND_NAME'; $fieldNames[] = 'LAST_NAME'; } if ($enableDupCtrlByOrganization) { $fieldNames[] = 'COMPANY_TITLE'; } if ($enableDupCtrlByPhone) { $fieldNames[] = 'FM.PHONE'; } if ($enableDupCtrlByEmail) { $fieldNames[] = 'FM.EMAIL'; } $adapter = \Bitrix\Crm\EntityAdapterFactory::create($arLead, CCrmOwnerType::Lead); $dups = $dupChecker->findDuplicates($adapter, new \Bitrix\Crm\Integrity\DuplicateSearchParams($fieldNames)); $dupIDs = array(); foreach ($dups as &$dup) { /** @var \Bitrix\Crm\Integrity\Duplicate $dup */ if (empty($dupIDs)) { $dupIDs = $dup->getEntityIDsByType(CCrmOwnerType::Lead); } else { $dupIDs = array_intersect($dupIDs, $dup->getEntityIDsByType(CCrmOwnerType::Lead)); } } unset($dup); if (!empty($dupIDs)) { $isDuplicate = true; if ($dupCtrlType !== 'SKIP') { $dupItems = array();
if (is_string($phone) && $phone !== '') { $fields['FM']['PHONE'][] = array('VALUE' => $phone); } } } if ($hasEmails) { $fieldNames[] = 'FM.EMAIL'; $fields['FM']['EMAIL'] = array(); foreach ($emails as $email) { if (is_string($email) && $email !== '') { $fields['FM']['EMAIL'][] = array('VALUE' => $email); } } } } $adapter = \Bitrix\Crm\EntityAdapterFactory::create($fields, CCrmOwnerType::Company); $dups = $checker->findDuplicates($adapter, new \Bitrix\Crm\Integrity\DuplicateSearchParams($fieldNames)); $entityInfoByType = array(); foreach ($dups as &$dup) { /** @var \Bitrix\Crm\Integrity\Duplicate $dup */ $entities = $dup->getEntities(); if (!(is_array($entities) && !empty($entities))) { continue; } //Each entity type limited by 50 items foreach ($entities as &$entity) { /** @var \Bitrix\Crm\Integrity\DuplicateEntity $entity */ $entityTypeID = $entity->getEntityTypeID(); $entityID = $entity->getEntityID(); if (!isset($entityInfoByType[$entityTypeID])) { $entityInfoByType[$entityTypeID] = array($entityID => array());