Поиск в CRM по телефону и e-mail
Пример отображает форму для ввода телефона и e-mail. Ниже формы выводится таблица с результатом поиска по столбцам:
- id сущности
- сущность
- заголовок
- телефоны сущности
- емаилы сущности
Код через поиск дубликатов находит все сущности (лид, контакт, компания) у которых есть указанный телефон/е-маил. Потом из списка всех ID получается информация о каждой сущности:
- заголовок или имя фамилия
- все телефоны
и выводится в таблице.
<? include('crest.php'); $phone = ($_POST['PHONE'])?htmlspecialchars($_POST['PHONE']):false; $email = ($_POST['EMAIL'])?htmlspecialchars($_POST['EMAIL']):false; $entityIDs = [ 'LEAD' => [], 'CONTACT' => [], 'COMPANY' => [] ]; $resultEntity = [ 'lead' => [], 'contact' => [], 'company' => [] ]; if($phone) { $result = CRest::call('crm.duplicate.findbycomm', [ 'type' => 'PHONE', 'values' => [$phone] ]); if(is_array($result['result']['LEAD'])) { $entityIDs['LEAD'] = array_merge($entityIDs['LEAD'], $result['result']['LEAD']); } if(is_array($result['result']['CONTACT'])) { $entityIDs['CONTACT'] = array_merge($entityIDs['CONTACT'], $result['result']['CONTACT']); } if(is_array($result['result']['COMPANY'])) { $entityIDs['COMPANY'] = array_merge($entityIDs['COMPANY'], $result['result']['COMPANY']); } } if($email) { $result = CRest::call('crm.duplicate.findbycomm', [ 'type' => 'EMAIL', 'values' => [$email] ]); if(is_array($result['result']['LEAD'])) { $entityIDs['LEAD'] = array_merge($entityIDs['LEAD'], $result['result']['LEAD']); } if(is_array($result['result']['CONTACT'])) { $entityIDs['CONTACT'] = array_merge($entityIDs['CONTACT'], $result['result']['CONTACT']); } if(is_array($result['result']['COMPANY'])) { $entityIDs['COMPANY'] = array_merge($entityIDs['COMPANY'], $result['result']['COMPANY']); } } if(!empty($entityIDs['LEAD'])) { $result = CRest::call( 'crm.lead.list', [ 'filter' => [ 'ID' => $entityIDs['LEAD'] ], 'select' => [ 'ID', 'NAME', 'LAST_NAME', 'PHONE', 'EMAIL', 'TITLE' ] ] ); if(!empty($result['result'])) { $resultEntity['lead'] = $result['result']; } } if(!empty($entityIDs['CONTACT'])) { $result = CRest::call( 'crm.contact.list', [ 'filter' => [ 'ID' => $entityIDs['CONTACT'] ], 'select' => [ 'ID', 'NAME', 'LAST_NAME', 'PHONE', 'EMAIL' ] ] ); if(!empty($result['result'])) { $resultEntity['contact'] = $result['result']; } } if(!empty($entityIDs['COMPANY'])) { $result = CRest::call( 'crm.company.list', [ 'filter' => [ 'ID' => $entityIDs['COMPANY'] ], 'select' => [ 'ID', 'PHONE', 'EMAIL', 'TITLE' ] ] ); if(!empty($result['result'])) { $resultEntity['company'] = $result['result']; } } ?> <!DOCTYPE html> <html lang="ru"> <head> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous"> </head> <body class="container"> <form method="post" action=""> <div class="row"> <div class="col-4 mt-3"> <label>E-mail*</label> </div> <div class="col-6 mt-3"> <input type="text" name="EMAIL" value="<?=$email?>"> </div> </div> <div class="row"> <div class="col-4 mt-3"> <label>Phone*</label> </div> <div class="col-6 mt-3"> <input type="text" name="PHONE" value="<?=$phone?>"> </div> </div> <div class="row"> <div class="col-sm-10"> <input type="submit" name="SEARCH" class="btn btn-primary" value="Search"> </div> </div> </form> <table class="table mt-5"> <thead> <tr> <th scope="col">ID</th> <th scope="col">Entity</th> <th scope="col">Title</th> <th scope="col">Phones</th> <th scope="col">Emails</th> </tr> </thead> <tbody> <? foreach($resultEntity as $entity=>$items):?> <? foreach($items as $item): $phones = ''; if(!empty($item['PHONE'])) { $item['PHONE'] = array_column($item['PHONE'],'VALUE'); $phones = implode(', ', $item['PHONE']); } $emails = ''; if(!empty($item['EMAIL'])) { $item['EMAIL'] = array_column($item['EMAIL'],'VALUE'); $emails = implode(', ', $item['EMAIL']); } $title = ''; if($item['TITLE']) { $title = $item['TITLE'].(($item['NAME'] || $item['LAST_NAME'])?': ':''); } if($item['NAME'] || $item['LAST_NAME']) { $title .= implode(' ',[$item['NAME'], $item['LAST_NAME']]); } ?> <tr> <th scope="row"><?=$item['ID']?></th> <td><?=$entity?></td> <td><?=$title?></td> <td><?=$phones?></td> <td><?=$emails?></td> </tr> <? endforeach?> <? endforeach?> </tbody> </table> </body> </html>
© «Битрикс», 2001-2024, «1С-Битрикс», 2024