- Модуль: 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);
}
}
}