AddressField::getAddressList

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. AddressField
  4. getAddressList
  • Модуль: 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;
}

Добавить комментарий