CAllCrmContact::RebuildDuplicateIndex

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CAllCrmContact
  4. RebuildDuplicateIndex
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_contact.php
  • Класс: \CAllCrmContact
  • Вызов: CAllCrmContact::RebuildDuplicateIndex
static function RebuildDuplicateIndex($IDs)
{
	if(!is_array($IDs))
	{
		$IDs = array($IDs);
	}

	$dbResult = self::GetListEx(
		array(),
		array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'),
		false,
		false,
		array('ID', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'DATE_MODIFY')
	);

	if(!is_object($dbResult))
	{
		return;
	}

	$entityMultifields = DuplicateCommunicationCriterion::prepareBatchEntityMultifieldValues(
		CCrmOwnerType::Contact,
		$IDs
	);

	$duplicateCriterionRegistrar = DuplicateManager::getCriterionRegistrarForReindex(\CCrmOwnerType::Contact);

	while($fields = $dbResult->Fetch())
	{
		$ID = (int)$fields['ID'];
		$fields['FM'] = $entityMultifields[$ID] ?? null;

		$data =
			(new Crm\Integrity\CriterionRegistrar\Data())
				->setEntityTypeId(\CCrmOwnerType::Contact)
				->setEntityId($ID)
				->setCurrentFields($fields)
		;
		$duplicateCriterionRegistrar->register($data);

		DuplicateRequisiteCriterion::registerByEntity(CCrmOwnerType::Contact, $ID);

		DuplicateBankDetailCriterion::registerByEntity(CCrmOwnerType::Contact, $ID);
	}
}

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