• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/volatile/eventhandler.php
  • Класс: Bitrix\Crm\Integrity\Volatile\EventHandler
  • Вызов: EventHandler::onUserFieldDelete
static function onUserFieldDelete(array $fields, int $id)
{
	$ufEntityTypeMap = [
		CCrmLead::GetUserFieldEntityID() => [CCrmOwnerType::Lead],
		CCrmCompany::GetUserFieldEntityID() => [CCrmOwnerType::Company],
		CCrmContact::GetUserFieldEntityID() => [CCrmOwnerType::Contact],
		EntityRequisite::getSingleInstance()->getUfId() => [CCrmOwnerType::Company, CCrmOwnerType::Contact],
	];

	if (
		is_string($fields['FIELD_NAME'])
		&& $fields['FIELD_NAME'] !== ''
		&& is_string($fields['ENTITY_ID'])
		&& isset($ufEntityTypeMap[$fields['ENTITY_ID']])
	)
	{
		$filterEntityTypeIds = $ufEntityTypeMap[$fields['ENTITY_ID']];
		$fieldName = $fields['FIELD_NAME'];
		$volatileTypeIds = [];
		$entityTypeIds = [];
		$res = DuplicateIndexTypeSettingsTable::getList(
			[
				'select' => ['ID', 'ENTITY_TYPE_ID'],
				'filter' => [
					'@ENTITY_TYPE_ID' => $filterEntityTypeIds,
					'=FIELD_NAME' => $fieldName,
				]
			]
		);
		while ($row = $res->fetch())
		{
			$volatileTypeIds[] = (int)$row['ID'];
			$entityTypeIds[] = (int)$row['ENTITY_TYPE_ID'];
		}

		$eventHandler = new static(
			static::EVENT_USER_FIELD_DELETE,
			$volatileTypeIds,
			$entityTypeIds
		);
		$eventHandler->makeCleaningActions();
	}
}