• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/conversion/conversionmanager.php
  • Класс: Bitrix\Crm\Conversion\ConversionManager
  • Вызов: ConversionManager::getParentalField
static function getParentalField($entityTypeID, $fieldName)
{
	$resultField = [
		'ENTITY_TYPE_ID' => $entityTypeID,
		'ENTITY_TYPE_NAME' => \CCrmOwnerType::ResolveName($entityTypeID),
		'FIELD_NAME' => $fieldName
	];
	$traverseMap = [$fieldName => true];

	for(;;)
	{
		$field = null;
		$srcEntityTypeIDs = static::getSourceEntityTypeIDs($resultField['ENTITY_TYPE_ID']);
		foreach($srcEntityTypeIDs as $srcEntityTypeID)
		{
			$map = EntityConversionMap::load($srcEntityTypeID, $resultField['ENTITY_TYPE_ID']);
			if(!$map)
			{
				continue;
			}

			foreach($map->getItems() as $item)
			{
				if($resultField['FIELD_NAME'] === $item->getDestinationField())
				{
					$field = [
						'ENTITY_TYPE_ID' => $srcEntityTypeID,
						'ENTITY_TYPE_NAME' => \CCrmOwnerType::ResolveName($srcEntityTypeID),
						'FIELD_NAME' => $item->getSourceField()
					];
					break;
				}
			}

			if($field !== null)
			{
				break;
			}
		}

		if($field === null)
		{
			break;
		}

		//Protection against infinite loop
		if(isset($traverseMap[$field['FIELD_NAME']]))
		{
			break;
		}

		$resultField = $field;
		$traverseMap[$field['FIELD_NAME']] = true;
	}

	return $resultField;
}