- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/volatile/type/addressfield.php
- Класс: Bitrix\Crm\Integrity\Volatile\Type\AddressField
- Вызов: AddressField::getAddressList
protected function getAddressList(int $entityId): array
{
$addressList = [];
$entityTypeId = $this->getEntityTypeId();
switch ($entityTypeId)
{
case CCrmOwnerType::Lead:
$res = AddressTable::getList(
[
'filter' => [
'=ENTITY_TYPE_ID' => $entityTypeId,
'=ENTITY_ID' => $entityId,
],
]
);
break;
case CCrmOwnerType::Company:
case CCrmOwnerType::Contact:
$query = new Query(AddressTable::getEntity());
$query->addSelect('*');
$query->addSelect('PRESET.COUNTRY_ID', 'COUNTRY_ID');
$query->registerRuntimeField('',
new ReferenceField('RQ',
RequisiteTable::getEntity(),
[
'=ref.ID' => 'this.ENTITY_ID',
'=ref.ENTITY_TYPE_ID' => new SqlExpression($entityTypeId),
'=ref.ENTITY_ID' => new SqlExpression($entityId)
],
['join_type' => 'INNER']
)
);
$query->registerRuntimeField('',
new ReferenceField('PRESET',
PresetTable::getEntity(),
['=ref.ID' => 'this.RQ.PRESET_ID'],
['join_type' => 'LEFT']
)
);
$query->setFilter(['ENTITY_TYPE_ID' => CCrmOwnerType::Requisite]);
$res = $query->exec();
break;
default:
$res = null;
}
if (is_object($res))
{
while($row = $res->fetch())
{
$addressList[] = [
'TYPE_ID' => (int)$row['TYPE_ID'],
'ADDRESS_1' => $row['ADDRESS_1'] ?? '',
'ADDRESS_2' => $row['ADDRESS_2'] ?? '',
'CITY' => $row['CITY'] ?? '',
'POSTAL_CODE' => $row['POSTAL_CODE'] ?? '',
'REGION' => $row['REGION'] ?? '',
'PROVINCE' => $row['PROVINCE'] ?? '',
'COUNTRY' => $row['COUNTRY'] ?? '',
'COUNTRY_CODE' => $row['COUNTRY_CODE'] ?? '',
'LOC_ADDR_ID' => (int)($row['LOC_ADDR_ID'] ?? 0),
'COUNTRY_ID' => (int)($row['COUNTRY_ID'] ?? 0),
];
}
}
return $addressList;
}