• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/fieldsynchronizer.php
  • Класс: Bitrix\Crm\WebForm\FieldSynchronizer
  • Вызов: FieldSynchronizer::findSyncField
private function findSyncField(
	string $srcEntityTypeName,
	string $srcFieldName,
	string $dstEntityTypeName,
	array $dstEntityFieldNames
) : ?string
{
	if ($dstEntityTypeName === $srcEntityTypeName)
	{
		return $srcFieldName;
	}

	if ($this->isUserField($srcFieldName))
	{
		if ($dstFieldName = $this->getSystemFieldByUserField($dstEntityTypeName, $srcEntityTypeName, $srcFieldName))
		{
			return $dstFieldName;
		}

		if ($dstFieldName = $this->getUserFieldSyncMap($srcEntityTypeName,$dstEntityTypeName)[$srcFieldName])
		{
			return $dstFieldName;
		}

		return null;
	}

	if (in_array($srcFieldName, $dstEntityFieldNames, true))
	{
		return $srcFieldName;
	}

	if ($aliases = $this::TYPE_ALIASES[$srcFieldName])
	{
		foreach ($aliases as $alias)
		{
			if (in_array($alias,$dstEntityFieldNames,true))
			{
				return $alias;
			}
		}
	}

	$hardcodeType = @$this::HARDCODED_TYPE_ALIASES[$srcEntityTypeName][$dstEntityTypeName][$srcFieldName];
	if ($hardcodeType && in_array($hardcodeType,$dstEntityFieldNames,true))
	{
		return $hardcodeType;
	}

	if ($dstFieldName = $this->getUserFieldBySystemField($dstEntityTypeName, $srcEntityTypeName, $srcFieldName))
	{
		return $dstFieldName;
	}

	return null;
}