• Модуль: crmmobile
  • Путь к файлу: ~/bitrix/modules/crmmobile/lib/Controller/Action/Terminal/FindClient.php
  • Класс: BitrixCrmMobileControllerActionTerminalFindClient
  • Вызов: FindClient::run
public function run(string $phoneNumber)
{
	$result = [];

	$entityTypeIds = self::getEntityTypeIds();
	foreach ($entityTypeIds as $entityTypeId => $entityTypeData)
	{
		/** @var DataManager $table */
		$table = $entityTypeData['table'];

		$categoryId = 0;

		$duplicatesList = DuplicateCommunicationMatchCodeTable::getList([
			'select' => ['ENTITY_TYPE_ID', 'ENTITY_ID'],
			'filter' => [
				'=TYPE' => 'PHONE',
				'=VALUE' => DuplicateCommunicationCriterion::normalizePhone($phoneNumber),
				'=ENTITY_TYPE_ID' => $entityTypeId,
			],
			'order' => [
				'ENTITY_TYPE_ID' => 'ASC',
				'ENTITY_ID' => 'ASC'
			],
			'runtime' => [
				new ReferenceField('UA',
					$table::getEntity(),
					[
						'=ref.ID' => 'this.ENTITY_ID',
						'=ref.CATEGORY_ID' => new SqlExpression('?i', $categoryId),
					],
					['join_type' => Join::TYPE_INNER]
				)
			],
			'limit' => 50,
		]);

		$entitiesData = [];
		while ($duplicate = $duplicatesList->fetch())
		{
			$entitiesData[$duplicate['ENTITY_ID']] = [];
		}

		self::prepareEntitiesData($entityTypeId, $entitiesData);
		$entityMultiFieldValues = self::getEntityMultiFieldValues($entityTypeId, array_keys($entitiesData));

		foreach ($entitiesData as $entityId => $entityInfo)
		{
			$result[] = [
				'ENTITY_TYPE_ID' => $entityTypeId,
				'ENTITY_ID' => $entityId,
				'TITLE' => $entityInfo['TITLE'],
				'POST' => $entityInfo['POST'],
				'URL' => $entityInfo['SHOW_URL'],
				'PHONE' => $entityMultiFieldValues[$entityId]['PHONE'] ?? null,
				'EMAIL' => $entityMultiFieldValues[$entityId]['EMAIL'] ?? null,
			];
		}
	}

	return $result;
}