|   |   | 
| 
 | Поиск телефона в произвольном формате запросом к КИ | ☑ | ||
|---|---|---|---|---|
| 0
    
        valerivp 08.11.22✎ 21:54 | 
        Как реализовать?
 пример телефон +79845612300 может быть записан: 9845612300 89845612300 8(984)5612300 +7-984-5612-300 ... отлично работает поиск ПОДОБНО "%9%8%4%5%6%1%2%3%0%0%" но только пока в строке не указано два телефона, например 898456123-5-5, +79-0-0-1234567 Как искать телефон? | |||
| 1
    
        Asmody 08.11.22✎ 22:25 | 
        В таком виде никак.
 Приводить ПередЗаписью номер в канонический вид и искать по нему | |||
| 2
    
        Гений 1С гуру 08.11.22✎ 22:40 | 
        (1) в разного вида звонилках встречал поиск по разным форматам номеров типа.     | |||
| 3
    
        Гений 1С гуру 08.11.22✎ 22:40 | 
        подобно +7%9%3% и т.п.     | |||
| 4
    
        PR 08.11.22✎ 22:43 | 
        (0) Отталкивайся от того, что между цифрами может быть только один из вариантов:
 Ничего ( ) - Пробел | |||
| 5
    
        PR 08.11.22✎ 22:45 | 
        Геня решил блеснуть эрудицией, но... не получилось     | |||
| 6
    
        valerivp 08.11.22✎ 22:56 | 
        (4) Проблема в том, что между цифр может не быть разделителя     | |||
| 7
    
        PR 08.11.22✎ 23:03 | 
        (6) О чем тебе говорит Ничего?     | |||
| 8
    
        Мимохожий Однако 08.11.22✎ 23:10 | 
        Убери все знаки кроме цифр из строки и ищи. Если хоть что-то нашёл, то и выводи эту строку на выходе     | |||
| 9
    
        Asmody 08.11.22✎ 23:19 | 
        (0) ты же не думаешь, что поле для показа и поле для поиска - это одно и то же поле?     | |||
| 10
    
        vicof 09.11.22✎ 00:04 | 
        Реглуярки наше всё     | |||
| 11
    
        NorthWind 09.11.22✎ 10:15 | 
        (2) возможно, звонилки кодом ищут, а не запросом     | |||
| 12
    
        NorthWind 09.11.22✎ 10:21 | 
        Думаю что выкидывать телефоны из БД в более быструю память (строка, ТЗ) и дальше регулярки или еще чет такое. Запросом такое говно не перелопатить имхо.     | |||
| 13
    
        Kassern 09.11.22✎ 10:24 | 
        (0) Унифицировать ввод номера телефона, ввести маску. Если номеров несколько, то лучше сделать дополнительную строчку, чем вводить через запятую. Тут как раз в новой платформе можно будет красиво это вывести плашками)     | |||
| 14
    
        Fedor-1971 09.11.22✎ 10:45 | 
        (0) ищи сам телефон 5612300, потом из найденного кодом отловишь Код и Префикс страны
 + унификация через маску ввода как в (13) +Страна(УУУ)ХХХ-ХХ-ХХ ДДДД с учётом, что в телефоне могут записать добавочный номер (+79845612300 1111) или делаешь универсальную форму ввода номера в максимально возможном виде (отдельно: страна, код, номер, добавочный), а записываешь в унифицированном, например так: +7;984;5612300.1111, если используешь автонабор номера то преобразование крайне простое: +79845612300Р1111 и возможен поиск по коду региона и страны | |||
| 15
    
        valerivp 09.11.22✎ 16:36 | 
        сделал так:
 НомерТелефона = Прав(Данные.НомерТелефона, 10); МассивСимволов = Новый Массив; Для н = 1 по СтрДлина(НомерТелефона) Цикл МассивСимволов.Добавить(Сред(НомерТелефона, н, 1)); КонецЦикла; Запрос.УстановитьПараметр("НомерТелефона", "%" + СтрСоединить(МассивСимволов, "%") + "%"); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл НомерТелефона2 = Выборка.НомерТелефона; НомерТелефона2 = СтрЗаменить(НомерТелефона2, " ", ""); НомерТелефона2 = СтрЗаменить(НомерТелефона2, "-", ""); НомерТелефона2 = СтрЗаменить(НомерТелефона2, "(", ""); НомерТелефона2 = СтрЗаменить(НомерТелефона2, ")", ""); Если СтрНайти(НомерТелефона2, НомерТелефона) Тогда Пользователь = Выборка.Пользователь; ИмяПользователя = Выборка.ИмяПользователя; Прервать; КонецЕсли; КонецЦикла | |||
| 16
    
        Said_We 10.11.22✎ 17:42 | 
        (1) "В таком виде никак." - да ладно никак.
 Даже на 1С SQL через одно место, но можно. | |||
| 17
    
        Said_We 10.11.22✎ 18:21 | 
        (1) Сначала разбиваешь строки с номером по разделителям.
 Потом разбиваешь по одному символу все номера. Потом выкидываешь все символы, которые не нужны. Собираешь обратно. Примерно так собрать можно: https://infostart.ru/1c/articles/407913/ | |||
| 18
    
        Fragster гуру 10.11.22✎ 18:50 | 
        (0) надо взять линейку и заставить людей вбить номера телефонов нормально, тогда в колонке НомерТелефона ТЧ КонтактнаяИнформация будет каноническое значение     | |||
| 19
    
        Said_We 10.11.22✎ 20:27 | 
        (18) Или написать программку, которая максимально сама поправит.     | |||
| 20
    
        Said_We 11.11.22✎ 10:40 | 
        (18) Иначе зачем программисты нужны. То что вбили телефоны как попало пользователи и без программиста знают.
 1. Почему программа дала вбить номера телефонов как попало - это вопрос к программистам. 2. Раз первый вопрос к программистам, то и править программисты должны. Если уж работаем через виноватых, а не по обязанностям и возможностям :-) 3. Что бы новые телефоны, введенные как попало, не появлялись, то сначала форму ввода поправить, что бы вводить давать только по формату, а потом уже править в базе существующие. | |||
| 21
    
        Kassern 11.11.22✎ 10:48 | 
        (20) (19) Даешь леща, тем кто допустил разврат в номерах телефонов, делаешь нормальную маску унифицированного ввода, а потом уже обработкой правишь кривые номера один раз.     | |||
| 22
    
        Said_We 11.11.22✎ 12:10 | 
        (21) Так я тоже самое для (18) и написал в (20). А то там совсем другое предложение для (0). :-)     | |||
| 23
    
        Said_We 11.11.22✎ 18:36 | 
        (12) "Запросом такое говно не перелопатить имхо." - перелопатить. И даже запросом от 1С перелопатить.     | |||
| 24
    
        Fragster гуру 12.11.22✎ 01:19 | 
        (23) а воспитательный эффект где?     | |||
| 25
    
        Said_We 12.11.22✎ 11:32 | 
        (24) Предлагаешь программистам, которые допустили ввод телефона не по маске отбить что-нибудь?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |