Страница 1 из 1

Дубли записей заявок

Добавлено: 02 дек 2025, 15:51
vda81
Подскажите пожалуйста, как сделать проверку дублей заявок по номеру телефона. Есть сущность "Заявки", есть поле телефон с маской. Как можно сделать так, чтобы когда оператор заходил в заявку, у него появлялся список заявок с таким же номером телефона?

Re: Дубли записей заявок

Добавлено: 02 дек 2025, 16:50
support
Попробуйте это поле https://docs.rukovoditel.net.ru/index.php?p=101

Re: Дубли записей заявок

Добавлено: 02 дек 2025, 17:30
vda81
Супер, спасибо большое, но я не очень разбираюсь в программировании, подскажите, что нужно написать.

Re: Дубли записей заявок

Добавлено: 02 дек 2025, 22:47
Fait
vda81 писал(а): 02 дек 2025, 15:51 Подскажите пожалуйста, как сделать проверку дублей заявок по номеру телефона. Есть сущность "Заявки", есть поле телефон с маской. Как можно сделать так, чтобы когда оператор заходил в заявку, у него появлялся список заявок с таким же номером телефона?
Сделайте поле "PHP код" и вставьте туда этот код:

Код: Выделить всё

$phone = [777];
$res = []; $out = '';
if (strlen($phone) > 10) {
  $check = db_query("select * from app_entity_33 where
REGEXP_REPLACE(field_888, '[^0-9]', '')=REGEXP_REPLACE('".preg_replace('/\D/', '', $phone)."', '[^0-9]', '')");
  foreach ($check as $k => $value) {
    //$res[] = ((int)$k + 1).') '.$value['field_999']; // Просто текст
    $res[] = '<a target="_blank" href="index.php?module=items/info&path=33-'.$value['id'].'">'.((int)$k + 1).') '.$value['field_999'].'</a>'; // Ссылка на запись
  }
  if (empty($res)) {
    $out = 'Сделок с таким номером нет';
  }
  else {
    $out = 'Номер телефона встречается в таких сделках:<br>'.implode('<br>',$res);
  }
}
//echo $out; // Ajax-запрос
$output_value = $out; // PHP-код
777 - id поля с номером телефона в форме
33 - id сущности "Заявки"
888 - id поля с номером телефона в сущности "Заявки"
999 - id поля "Наименование", чтобы вывести название заявки. Если не нужно отображать как ссылку, то раскомментируйте первую строку, а вторую удалите.

Если нужно отображать именно на странице записи, то используйте поле типа "PHP код", установив там в настройках галочку "Выполнять динамически".
Если нужно отображать список прямо на форме ввода, то используйте поле типа "Ajax-запрос", раскомментируйте соответствующую строку и удалите "$output_value =...".

Re: Дубли записей заявок

Добавлено: 02 дек 2025, 23:03
vda81
спасибо за помощь, но я сделал как то так. вроде все работает

Код: Выделить всё

e.id <> [id] and 
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(e.field_213,'+',''),'-',''),' ',''),'(',''),')','') =
(
    select 
        REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(field_213,'+',''),'-',''),' ',''),'(',''),')','')
    from app_entity_21
    where id=[id]
)
field_213 - поле id телефон
app_entity_21 - id сущности

немного подкорректировал css для вывода ссылок дублей в одну строку

Код: Выделить всё

tr.form-group.form-group-326 ul {
    display: flex;     
    gap: 7px;           
    padding: 0;        
    margin: 0;         
    list-style: none;  
}

tr.form-group.form-group-326 li {
border-top:none;
  padding: 0px;
}

tr.form-group.form-group-326 a {
text-decoration: underline;
}
вот так выводится на странице записи

Изображение

Re: Дубли записей заявок

Добавлено: 03 дек 2025, 08:45
Fait
Как хотите)
Через REGEXP_REPLACE как-то компактнее получается.
И моя версия выводит информативнее, попробуйте)