• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/automaticduplicateindexbuilder.php
  • Класс: Bitrix\Crm\Integrity\AutomaticDuplicateIndexBuilder
  • Вызов: AutomaticDuplicateIndexBuilder::saveDuplicateIndexItem
protected function saveDuplicateIndexItem(array $fields)
{
	$primaryFields = ['USER_ID', 'ENTITY_TYPE_ID', 'TYPE_ID', 'MATCH_HASH', 'SCOPE'];
	$query = AutomaticDuplicateIndexTable::query()
		->setSelect(['ID']);

	foreach ($primaryFields as $fieldCode)
	{
		if (isset($fields[$fieldCode]))
		{
			$query->where($fieldCode, $fields[$fieldCode]);
		}
		else
		{
			throw new \Bitrix\Main\ArgumentException($fieldCode . " must be set");
		}
	}

	$existedItem = $query->fetchObject();
	if ($existedItem)
	{
		$hasChanges = false;
		foreach ($fields as $code => $value)
		{
			if ($existedItem[$code] !== $value)
			{
				$existedItem[$code] = $value;
				$hasChanges = true;
			}
		}
		if ($hasChanges)
		{
			$existedItem->save();
		}
	}
	else
	{
		Entity\AutomaticDuplicateIndexTable::add($fields);
	}
}