Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Определить мобильный телефон или нет в запросе

Определить мобильный телефон или нет в запросе
Я
   TolikoSprosit
 
06.02.20 - 12:50
Есть данные вида: 912ххххххх Россия; 24xxxxxxx Белоруссия; и тд
Другими словами, есть номер телефона без кода страны и страна.

Задача: в запросе понять мобильный он или нет.

Мы можем создать любую вспомогательную структуру данных где будем хранить 912 Россия - мобильный, 24 Белоруссия - мобильный например, или что-то другое, все что угодно лишь бы в запросе быстро(!) определить мобильный он или нет.

Давай, Миста, предложи элегантное решение, интересно как бы вы сделали. У меня совсем хороших идей нет.
   d4rkmesa
 
1 - 06.02.20 - 12:53
(0) Использовать "ПОДОБНО" не предлагать?
   Надо работать
 
2 - 06.02.20 - 12:53
Выбор когда Тел Подобно "912%" Тогда Истина Конец
   vicof
 
3 - 06.02.20 - 12:54
Это не элегантно)
   Жан Пердежон
 
4 - 06.02.20 - 12:57
Процедура ПередЗаписью()

ЭтотОбъект.ЭтоМобильный = ЭтоМобильныйТел();

КонецПроцедуры

*****************************

Запрос = Новый Запрос("ВЫБРАТЬ ЭтоМобильный ИЗ ...
   Ненавижу 1С
 
5 - 06.02.20 - 12:58
мобильный может и на 495 начинаться
   TolikoSprosit
 
6 - 06.02.20 - 12:58
Подобно в больших соединения будет медленно, тем более только в России кодов типа "912" много около 100
   catena
 
7 - 06.02.20 - 12:59
А страна у телефона есть? А то у меня вот домашний номер на 24 начинается.
   TolikoSprosit
 
8 - 06.02.20 - 13:00
(5) Там "4959" первые 4 цифры, и да эти случаи тоже надо обрабатывать
   catena
 
9 - 06.02.20 - 13:00
(6)Без подобно только создавать к телефону отдельный реквизит с одним только кодом.
   TolikoSprosit
 
10 - 06.02.20 - 13:00
(7) Да, страны есть
   vicof
 
11 - 06.02.20 - 13:00
(6) Заведи классификатор мобильных номеров
   TolikoSprosit
 
12 - 06.02.20 - 13:01
(9) Нет, реквизит "ОдинТолькоКодДляОпределенияМобильного" хуже чем просто флаг "Мобильный" уж тогда, но и флаг мобильный не нужен
   TolikoSprosit
 
13 - 06.02.20 - 13:02
(11) Какого вида и как соединять?
   TolikoSprosit
 
14 - 06.02.20 - 13:03
(4) Реквизит "Это мобильный" не нужен, слишком большой набор телефонов
   pechkin
 
15 - 06.02.20 - 13:03
если стоит вопрос быстродействия, то флаг нужен
   vicof
 
16 - 06.02.20 - 13:04
(13) Хрен знает, что ты там с чем соединяешь и какой вид тебе нужен.
"Задача: в запросе понять мобильный он или нет." Булево поле в классификаторе.
   pechkin
 
17 - 06.02.20 - 13:04
это называется денормализация для увеличения быстродействия
   TolikoSprosit
 
18 - 06.02.20 - 13:06
(15) ну не совсем-скорость скорость, просто приемлемое время. Реквизит вводить пока не будем, большая база.
   TolikoSprosit
 
19 - 06.02.20 - 13:07
(16) В каком классификаторе?
   d4rkmesa
 
20 - 06.02.20 - 13:08
Тупо вычислить подстроку и соединить с таблицей мобильных префиксов из параметров запроса не?
   TolikoSprosit
 
21 - 06.02.20 - 13:09
(20) ну я туда и думаю, но коды же все разной длинны...
   d4rkmesa
 
22 - 06.02.20 - 13:11
(21) Ну, не сильной уж разной, думаю, от 2 до 5.
   vicof
 
23 - 06.02.20 - 13:11
(19) Который ты сделаешь
   d4rkmesa
 
24 - 06.02.20 - 13:12
У мобильных в РФ можно считать что 3 символа. Или нет? Или номера как попало, с пробелами, дефисами, скобками и т.д.?
   TolikoSprosit
 
25 - 06.02.20 - 13:15
(24) Номера в "очищенном" виде, только цифры без пробелов и кодов стран.
Нет, не 3 символа, есть еще "4959" и "8129"
   TolikoSprosit
 
26 - 06.02.20 - 13:19
Мне не очень нравится:
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТелефонныеКоды КАК ТелефонныеКоды
   ПО (ПОДСТРОКА(Телефон.Номер, 0, 2) = ТелефонныеКоды.Код
   ИЛИ ПОДСТРОКА(Телефон.Номер, 0, 3) = ТелефонныеКоды.Код
   ИЛИ ПОДСТРОКА(Телефон.Номер, 0, 4) = ТелефонныеКоды.Код)
   И Телефон.Страна = ТелефонныеКоды.Страна
   Жан Пердежон
 
27 - 06.02.20 - 13:21
(26) элегантней и быстрее чем в (4) ничего не придумаешь
   TolikoSprosit
 
28 - 06.02.20 - 13:23
(27) ДА, это моя первая идея. Но нужно что-то другое.
   vicof
 
29 - 06.02.20 - 13:34
(28) Почему?
   TolikoSprosit
 
30 - 06.02.20 - 13:40
(29) Справочник телефонов очень большой. Его сложно будет быстро администрировать.
 
 Рекламное место пустует
   vicof
 
31 - 06.02.20 - 13:43
(30) Это не твоя проблема
   TolikoSprosit
 
32 - 06.02.20 - 13:48
(31) Друг, иди отсюда)
   vicof
 
33 - 06.02.20 - 13:50
Ты мне не друг) так что куда хочу, туда и хожу.
   palsergeich
 
34 - 06.02.20 - 13:50
(0) если автоматизировать бардак - получится автоматизированный бардак.
Надо наводить порядок в НСИ, а не постфактум на каждое исключение писать патч.
По моему неполохо это сделано в контактной информации в БСП.
Отдельно код страны, отдельно код города, отдельно номер в читаемом виде и отдельно номер слитно.
Все остальное приведет к постоянной борьбе с тем что введено не так
   TolikoSprosit
 
35 - 06.02.20 - 14:14
(34) Это все хорошо и прекрасно и порядок и красота, пока на практике:
Длинна кода города, разная для разных стран и регионов;
А 495xxxxxxx - почти всегда не мобильный, а 4959xxxxxx - мобильный;

Если у вас порядок в базе и вы безошибочно по любому своему телефону можете сказать мобильный он или нет, то расскажите пожалуйста как у вас все устроено, я бы с радостью почитал.
   Жан Пердежон
 
36 - 06.02.20 - 14:29
(30) причем тут администрирование вообще?
   palsergeich
 
37 - 06.02.20 - 14:44
(35) коды мобильных операторов в открытом доступе.
При наличии прямого номера - в лоб задача не решается.
Но у том же интернете есть пулы номеров, принадлежащие мобильным провайдерам
   palsergeich
 
38 - 06.02.20 - 14:46
   TolikoSprosit
 
39 - 06.02.20 - 14:49
(37) Давайте лучше про ваш порядок в НСИ)
   palsergeich
 
40 - 06.02.20 - 14:50
(39) что интересно?
   TolikoSprosit
 
41 - 06.02.20 - 14:52
(40) Все то же, как у вас организованы/могли бы быть организованы данные для решения задачи из первого поста)
   Кодер
 
42 - 06.02.20 - 15:47
Если это номера, с которых тебе звонили, то с "прямыми мобильными", то есть вида +7495[7 цифр], чуть проще. Когда я звоню с такого номера, то определяется  +7985[7 цифр]. То есть код оператора однозначно другой (и на него тоже можно звонить).

В остальном всё просто. Первые 4 цифры российского телефонного номера определяют оператора, и что-то типа региона. 7901 - билайн мобильные, 7902, 7910, 7916, 7985 - МТС мобильные, 7495 - МГТС (Москва) стационарные etc. Таблицы эти безусловно есть и легко гуглятся.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.