• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/bizproc/document/valuecollection/base.php
  • Класс: Bitrix\Crm\Integration\BizProc\Document\ValueCollection\Base
  • Вызов: Base::loadAddressValues
protected function loadAddressValues(): void
{
	$settings = Crm\EntityRequisite::getSingleInstance()->loadSettings($this->typeId, $this->id);

	$filter = [
		'=ENTITY_TYPE_ID' => $this->typeId,
		'=ENTITY_ID' => $this->id,
	];

	if (array_key_exists('REQUISITE_ID_SELECTED', $settings))
	{
		$filter['=ID'] = $settings['REQUISITE_ID_SELECTED'];
	}

	$requisiteId = Crm\EntityRequisite::getSingleInstance()->getList([
		'select' => ['ID'],
		'filter' => $filter,
		'order' => [
			'SORT' => 'ASC',
			'ID' => 'ASC',
		],
	])->fetch();

	if ($requisiteId === false)
	{
		return;
	}

	$addressFields = Crm\EntityRequisite::getAddresses($requisiteId['ID']);

	$primaryAddressFields = current($addressFields);
	foreach ($addressFields as $addressTypeId => $addressTypeFields)
	{
		if ($this->typeId === \CCrmOwnerType::Company && $addressTypeId === Crm\EntityAddressType::Registered)
		{
			continue;
		}
		if (!\CBPHelper::isEmptyValue($addressTypeFields))
		{
			$primaryAddressFields = $addressTypeFields;
			break;
		}
	}

	$registeredAddressFields = $addressFields[Crm\EntityAddressType::Registered];

	$primaryAddressFields = [
		'ADDRESS' => $primaryAddressFields['ADDRESS_1'],
		'ADDRESS_2' => $primaryAddressFields['ADDRESS_2'],
		'ADDRESS_CITY' => $primaryAddressFields['CITY'],
		'ADDRESS_POSTAL_CODE' => $primaryAddressFields['POSTAL_CODE'],
		'ADDRESS_REGION' => $primaryAddressFields['REGION'],
		'ADDRESS_PROVINCE' => $primaryAddressFields['PROVINCE'],
		'ADDRESS_COUNTRY' => $primaryAddressFields['COUNTRY'],
		'ADDRESS_COUNTRY_CODE' => $primaryAddressFields['COUNTRY_CODE'],
		'ADDRESS_LOC_ADDR_ID' => $primaryAddressFields['LOC_ADDR_ID'],
		'ADDRESS_LOC_ADDR' => $primaryAddressFields['LOC_ADDR'],
	];

	$registeredAddressFields = [
		'REG_ADDRESS' => $registeredAddressFields['ADDRESS_1'],
		'ADDRESS_LEGAL' => $registeredAddressFields['ADDRESS_1'],
		'REG_ADDRESS_2' => $registeredAddressFields['ADDRESS_2'],
		'REG_ADDRESS_CITY' => $registeredAddressFields['CITY'],
		'REG_ADDRESS_POSTAL_CODE' => $registeredAddressFields['POSTAL_CODE'],
		'REG_ADDRESS_REGION' => $registeredAddressFields['REGION'],
		'REG_ADDRESS_PROVINCE' => $registeredAddressFields['PROVINCE'],
		'REG_ADDRESS_COUNTRY' => $registeredAddressFields['COUNTRY'],
		'REG_ADDRESS_COUNTRY_CODE' => $registeredAddressFields['COUNTRY_CODE'],
		'REG_ADDRESS_LOC_ADDR_ID' => $registeredAddressFields['LOC_ADDR_ID'],
		'REG_ADDRESS_LOC_ADDR' => $registeredAddressFields['LOC_ADDR'],
	];

	$entityAddressFields = [$primaryAddressFields];
	if ($this->typeId === \CCrmOwnerType::Company)
	{
		$entityAddressFields[] = $registeredAddressFields;
	}
	foreach ($entityAddressFields as $addressTypeFields)
	{
		if (\CBPHelper::isEmptyValue(array_intersect_key($this->document, $addressTypeFields)))
		{
			$this->document = array_merge($this->document, $addressTypeFields);
		}
	}
}