• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/conversion/entityconversionmapper.php
  • Класс: Bitrix\Crm\Conversion\EntityConversionMapper
  • Вызов: EntityConversionMapper::updateMap
static function updateMap(EntityConversionMap $map)
{
	//Synchonize dynamic bindings only
	$srcEntitTypeID = $map->getSourceEntityTypeID();
	$dstEntitTypeID = $map->getDestinationEntityTypeID();

	$outdatedItems = array();
	foreach($map->getItems() as $item)
	{
		$srcFieldID = $item->getSourceField();
		$dstFieldID = $item->getDestinationField();
		if($dstFieldID === '')
		{
			$dstFieldID = $srcFieldID;
		}

		$isDynamicSrc = EntityConversionMapItem::isDynamicField($srcFieldID);
		$isDynamicDst = EntityConversionMapItem::isDynamicField($dstFieldID);
		$srcField = $isDynamicSrc ? self::getUserField($srcEntitTypeID, $srcFieldID) : null;
		$dstField = $isDynamicDst ? self::getUserField($dstEntitTypeID, $dstFieldID) : null;

		if(($isDynamicSrc && $srcField === null) || ($isDynamicDst && $dstField === null))
		{
			$outdatedItems[] = $item;
			continue;
		}
		elseif($isDynamicSrc && $srcField !== null && $isDynamicDst && $dstField !== null && !$item->isLocked())
		{
			$srcCode = UserFieldSynchronizer::getFieldComplianceCode($srcField);
			$dstCode = UserFieldSynchronizer::getFieldComplianceCode($dstField);
			if($srcCode !== $dstCode)
			{
				$outdatedItems[] = $item;
				continue;
			}
		}
	}

	if(!empty($outdatedItems))
	{
		foreach($outdatedItems as $item)
		{
			$map->removeItem($item);
		}
	}

	$intersections = UserFieldSynchronizer::getIntersection($srcEntitTypeID, $dstEntitTypeID);
	foreach($intersections as $intersection)
	{
		$srcFieldID = $intersection['SRC_FIELD_NAME'];
		$dstFieldID = $intersection['DST_FIELD_NAME'];

		if($map->findItemBySourceID($srcFieldID) === null)
		{
			$map->createItem($srcFieldID, $dstFieldID);
		}
	}
}