• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_contact.php
  • Класс: \CAllCrmContact
  • Вызов: CAllCrmContact::CreateRequisite
static function CreateRequisite($ID, $presetID)
{
	if(!is_integer($ID))
	{
		$ID = (int)$ID;
	}

	if($ID <= 0)
	{
		throw new Main\ArgumentException('Must be greater than zero', 'ID');
	}

	if(!is_integer($presetID))
	{
		$presetID = (int)$presetID;
	}

	if($presetID <= 0)
	{
		throw new Main\ArgumentException('Must be greater than zero', 'presetID');
	}

	$externalID = "CONTACT_{$ID}";

	if(Crm\EntityRequisite::getByExternalId($externalID, array('ID')) !== null)
	{
		//Already exists
		return false;
	}

	$dbResult = self::GetListEx(
		array(),
		array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N')
	);

	$entityFields = $dbResult->Fetch();
	if(!is_array($entityFields))
	{
		throw new Main\ObjectNotFoundException("The contact with ID '{$ID}' is not found");
	}

	$presetEntity = new Crm\EntityPreset();
	$presetFields = $presetEntity->getById($presetID);
	if(!is_array($presetFields))
	{
		throw new Main\ObjectNotFoundException("The preset with ID '{$presetID}' is not found");
	}

	$fieldInfos = $presetEntity->settingsGetFields(
		is_array($presetFields['SETTINGS']) ? $presetFields['SETTINGS'] : array()
	);

	$fullName = self::GetFullName($entityFields);

	$requisiteFields = array();
	foreach($fieldInfos as $fieldInfo)
	{
		$fieldName = isset($fieldInfo['FIELD_NAME']) ? $fieldInfo['FIELD_NAME'] : '';
		if($fieldName === Crm\EntityRequisite::PERSON_FIRST_NAME)
		{
			if(isset($entityFields['NAME']) && $entityFields['NAME'] !== '')
			{
				$requisiteFields[Crm\EntityRequisite::PERSON_FIRST_NAME] = $entityFields['NAME'];
			}
		}
		elseif($fieldName === Crm\EntityRequisite::PERSON_SECOND_NAME)
		{
			if(isset($entityFields['SECOND_NAME']) && $entityFields['SECOND_NAME'] !== '')
			{
				$requisiteFields[Crm\EntityRequisite::PERSON_SECOND_NAME] = $entityFields['SECOND_NAME'];
			}
		}
		elseif($fieldName === Crm\EntityRequisite::PERSON_LAST_NAME)
		{
			if(isset($entityFields['LAST_NAME']) && $entityFields['LAST_NAME'] !== '')
			{
				$requisiteFields[Crm\EntityRequisite::PERSON_LAST_NAME] = $entityFields['LAST_NAME'];
			}
		}
		elseif($fieldName === Crm\EntityRequisite::PERSON_FULL_NAME)
		{
			if($fullName !== '')
			{
				$requisiteFields[Crm\EntityRequisite::PERSON_FULL_NAME] = $fullName;
			}
		}
		elseif($fieldName === Crm\EntityRequisite::ADDRESS)
		{
			$requisiteFields[Crm\EntityRequisite::ADDRESS] = array(
				EntityAddressType::Primary =>
					ContactAddress::mapEntityFields(
						$entityFields,
						array('TYPE_ID' => EntityAddressType::Primary, 'SKIP_EMPTY' => true)
					)
			);
		}
	}

	if(empty($requisiteFields))
	{
		return false;
	}

	$requisiteFields['NAME'] = $fullName !== '' ? $fullName : $externalID;
	$requisiteFields['PRESET_ID'] = $presetID;
	$requisiteFields['ACTIVE'] = 'Y';
	$requisiteFields['ENTITY_TYPE_ID'] = CCrmOwnerType::Contact;
	$requisiteFields['ENTITY_ID'] = $ID;
	$requisiteFields['XML_ID'] = $externalID;

	$requisiteEntity = new Crm\EntityRequisite();
	return $requisiteEntity->add($requisiteFields)->isSuccess();
}