|
Поиск телефона в произвольном формате запросом к КИ | ☑ | ||
---|---|---|---|---|
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) Предлагаешь программистам, которые допустили ввод телефона не по маске отбить что-нибудь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |