...Человеческий поиск в разработке...
- Модуль: 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; }