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

Все вопросы/проблемы по установке и использовании.
Ответить
vda81
Сообщения: 11
Зарегистрирован: 13 окт 2025, 21:54
Имя: Дмитрий
Откуда: Москва

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

Сообщение vda81 »

Подскажите пожалуйста, как сделать проверку дублей заявок по номеру телефона. Есть сущность "Заявки", есть поле телефон с маской. Как можно сделать так, чтобы когда оператор заходил в заявку, у него появлялся список заявок с таким же номером телефона?
Аватара пользователя
support
Техническая поддержка
Сообщения: 7660
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

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

Сообщение support »

Попробуйте это поле https://docs.rukovoditel.net.ru/index.php?p=101
vda81
Сообщения: 11
Зарегистрирован: 13 окт 2025, 21:54
Имя: Дмитрий
Откуда: Москва

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

Сообщение vda81 »

Супер, спасибо большое, но я не очень разбираюсь в программировании, подскажите, что нужно написать.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1196
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

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

Сообщение 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 =...".
vda81
Сообщения: 11
Зарегистрирован: 13 окт 2025, 21:54
Имя: Дмитрий
Откуда: Москва

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

Сообщение 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;
}
вот так выводится на странице записи

Изображение
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1196
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

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

Сообщение Fait »

Как хотите)
Через REGEXP_REPLACE как-то компактнее получается.
И моя версия выводит информативнее, попробуйте)
Ответить