• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/merger/companymerger.php
  • Класс: Bitrix\Crm\Merger\CompanyMerger
  • Вызов: CompanyMerger::innerPrepareEntityFieldMergeData
protected function innerPrepareEntityFieldMergeData($fieldID, array $fieldParams,  array $seeds, array $targ, array $options = null)
{
	if($fieldID === 'CONTACT_ID')
	{
		$enabledIdsMap = null;
		if(isset($options['enabledIds']) && is_array($options['enabledIds']))
		{
			$enabledIdsMap = array_fill_keys($options['enabledIds'], true);
		}

		$sourceEntityIDs = array();
		$resultContactBindings = array();
		foreach($seeds as $seed)
		{
			$seedID = (int)$seed['ID'];
			if(is_null($enabledIdsMap) || isset($enabledIdsMap[$seedID]))
			{
				$seedContactBindings = Binding\ContactCompanyTable::getCompanyBindings($seedID);
				if(!empty($seedContactBindings))
				{
					$sourceEntityIDs[] = $seedID;
					self::mergeEntityBindings(
						\CCrmOwnerType::Contact,
						$seedContactBindings,
						$resultContactBindings
					);
				}
			}
		}

		$targID = (int)$targ['ID'];
		if(is_null($enabledIdsMap) || isset($enabledIdsMap[$targID]))
		{
			$targContactBindings = Binding\ContactCompanyTable::getCompanyBindings($targID);
			if(!empty($targContactBindings))
			{
				$sourceEntityIDs[] = $targID;
				self::mergeEntityBindings(
					\CCrmOwnerType::Contact,
					$targContactBindings,
					$resultContactBindings
				);
			}
		}

		return array(
			'FIELD_ID' => 'CONTACT_ID',
			'TYPE' => 'crm_contact',
			'IS_MERGED' => true,
			'IS_MULTIPLE' => true,
			'SOURCE_ENTITY_IDS' => array_unique($sourceEntityIDs, SORT_NUMERIC),
			'VALUE' => Binding\EntityBinding::prepareEntityIDs(\CCrmOwnerType::Contact, $resultContactBindings),
		);
	}
	return parent::innerPrepareEntityFieldMergeData($fieldID, $fieldParams, $seeds, $targ, $options);
}