• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_company.php
  • Класс: \CAllCrmCompany
  • Вызов: CAllCrmCompany::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 = "COMPANY_{$ID}";

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

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

	$entityFields = $dbResult->Fetch();
	if(!is_array($entityFields))
	{
		throw new Main\ObjectNotFoundException("The company 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'] : []
	);

	$title = isset($entityFields['TITLE']) ? $entityFields['TITLE'] : '';

	$requisiteFields = [];
	foreach($fieldInfos as $fieldInfo)
	{
		$fieldName = isset($fieldInfo['FIELD_NAME']) ? $fieldInfo['FIELD_NAME'] : '';
		if($fieldName === Crm\EntityRequisite::COMPANY_FULL_NAME)
		{
			if($title !== '')
			{
				$requisiteFields[Crm\EntityRequisite::COMPANY_FULL_NAME] = $title;
			}
		}
		elseif($fieldName === Crm\EntityRequisite::ADDRESS)
		{
			$requisiteFields[Crm\EntityRequisite::ADDRESS] = [
				EntityAddressType::Primary =>
					CompanyAddress::mapEntityFields(
						$entityFields,
						['TYPE_ID' => EntityAddressType::Primary, 'SKIP_EMPTY' => true]
					),
				EntityAddressType::Registered =>
					CompanyAddress::mapEntityFields(
						$entityFields,
						['TYPE_ID' => EntityAddressType::Registered, 'SKIP_EMPTY' => true]
					)
			];
		}
	}

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

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

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