• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/criterionregistrar/decorator/personcriterion.php
  • Класс: Bitrix\Crm\Integrity\CriterionRegistrar\Decorator\PersonCriterion
  • Вызов: PersonCriterion::wrapUpdate
protected function wrapUpdate(CriterionRegistrar\Data $data): Result
{
	$previousFields = $data->getPreviousFields();
	$currentFields = $data->getCurrentFields();

	$difference = ComparerBase::compareEntityFields($previousFields, $currentFields);

	if (
		$difference->isChanged(Item::FIELD_NAME_LAST_NAME)
		|| $difference->isChanged(Item::FIELD_NAME_NAME)
		|| $difference->isChanged(Item::FIELD_NAME_SECOND_NAME)
	)
	{
		$lastName =
			$difference->getCurrentValue(Item::FIELD_NAME_LAST_NAME)
			?? $difference->getPreviousValue(Item::FIELD_NAME_LAST_NAME)
		;

		$name =
			$difference->getCurrentValue(Item::FIELD_NAME_NAME)
			?? $difference->getPreviousValue(Item::FIELD_NAME_NAME)
		;

		$secondName =
			$difference->getCurrentValue(Item::FIELD_NAME_SECOND_NAME)
			?? $difference->getPreviousValue(Item::FIELD_NAME_SECOND_NAME)
		;

		DuplicatePersonCriterion::register(
			$data->getEntityTypeId(),
			$data->getEntityId(),
			(string)$lastName,
			(string)$name,
			(string)$secondName,
		);
	}

	return new Result();
}