|
Определить в каком диапазоне лежит номер, как можно быстрее | ☑ | ||
---|---|---|---|---|
0
Coldboy
03.07.12
✎
11:17
|
Здравствуйте. Проблема такова, ну не точнее проблема, интересует, кто как бы поступил. Я вот лично собираюсь сделать так создать справочник с направлениями диапазонами номеров, и потом забиваю диапазоны определять местный это номер или нет. Хотя нет, может быть не понятно объяснил.
У меня есть номер 8443551231 мне сначало надо определить местный он или нет, ну судя по коду 8443 это местный нашего города, хорошо, теперь, мне определить в каком он диапазоне, чтобы определить с какой станции был звонок для других действий. Как я определяю программно. Анализирую первые 4 символа, если они на 8443ХХХ это значит, местный. Дальше я захожу в справочник с направлениями, в группу местные беру все направления и тупо подставляю в каком диапазоне он будет, для определения станции. Какими бы вы делали еще методами это, или кто нить с похожим стакливался. Суть темы не задать вопрос, а просто узнать мнение других и их подходы в решении подобных задач. Надеюсь меня поняли, вы уж простите, за этот бред. |
|||
1
john_ddd
03.07.12
✎
11:28
|
какие цифры определяют направление 551231?
|
|||
2
fisher
03.07.12
✎
11:39
|
Тупо запросом.
|
|||
3
Coldboy
03.07.12
✎
12:19
|
8443 определяют город, а 551231 эт номре закрепленный за станиций, обычно их там диапазаонами 551000 по 551999 и тд.
(2) тупо запросом эт как? |
|||
4
Cube
03.07.12
✎
12:22
|
(3) Если я правильно понял, то 551 - номер станции? Ну и анализируй эти три цифры, не?
|
|||
5
Coldboy
03.07.12
✎
12:25
|
55 - номер станици.
|
|||
6
Cube
03.07.12
✎
12:26
|
(5) Всё, проблема решена?
|
|||
7
Coldboy
03.07.12
✎
12:27
|
Нет, я ваши решения к данной проблемы хотел услышать, может быть, у кого то более опытные и оперативные методы будут, чем мои перепорбы границ и диапазонов .
|
|||
8
Coldboy
03.07.12
✎
12:27
|
Просто я потом по первым 8443 опрееделяю если местная, то в 20 дипазщаонов загоняю все число и справниваю.
|
|||
9
Coldboy
03.07.12
✎
12:28
|
я думаю эт слишком долго (хотя времени у меня предостаточно), но я считаю, не красиво это все.
|
|||
10
Cube
03.07.12
✎
12:31
|
(7) Телефонный номер = 10 символов:
4 - код города 2 - номер станции 4 - номер абонента. КодГорода = Лев(НомерТелефона, 4); НомерСтанции = Сред(НомерТелефона, 5, 2); НомерАбонента = Прав(НомерТелефона, 4); Или я что-то не понял? |
|||
11
Coldboy
03.07.12
✎
12:33
|
тогда уж вам надо, смотрите 88443551231 набирать. 8 эт код страны как бы.
|
|||
12
Coldboy
03.07.12
✎
12:34
|
(10) вы что-то не поняли. но ваша идея мне очень понравлись спасибо.
|
|||
13
Coldboy
03.07.12
✎
12:34
|
Лев - брать и определять местный или нет.
|
|||
14
Cube
03.07.12
✎
12:38
|
(12) Ну, если б задача было описана более подробно, то мне бы не пришлось телепатировать её решение... Что ж всё таки надо-то?
|
|||
15
Coldboy
03.07.12
✎
12:39
|
ну там очень большое дело, корчое суть такая, всю тарификацию, систему скидок и тд, захерачить в 1С по телефонии.
|
|||
16
Cube
03.07.12
✎
12:41
|
(15) В (0) речь про какие-то диапазоны... Что НомерСтанции из (10) не подходит?
|
|||
17
Coldboy
03.07.12
✎
12:43
|
Ну да. Диапазоны еще нужны для расчета под взаимодействие между операторами, допустим есть несколько фирм, со станициями, и еще расчеты не тока между фирма- клиент, а фирма-фирма за используемые ресурсы.
|
|||
18
Cube
03.07.12
✎
12:46
|
(17) Твой поток мыслей очень сложно понимать :)
Твоя задача решена или нет? |
|||
19
Coldboy
03.07.12
✎
12:47
|
и кстати внутри области бывают, одна цифра город показывает в моем случае это в 8443 - это цифра 3,а бывает и 2, это допустим 84425, какой нить поселок допустим.
|
|||
20
Cube
03.07.12
✎
12:48
|
(19) Ну разбей КодГорода на КодРегиона и КодНаселенногоПункта...
|
|||
21
Coldboy
03.07.12
✎
12:48
|
(18) все равно пасибо за помощь.
|
|||
22
Coldboy
03.07.12
✎
12:49
|
Лев метод как бы простой, но я упустил его, я хотел пользоваться шаблоном типа
Если НАйти(Строка,"8443") =1 тогда и тд. |
|||
23
fisher
03.07.12
✎
13:19
|
(3) Тупо запросом - это значит тупым запросом.
ВЫБРАТЬ ДиапазоныНомеров.Ссылка КАК НужныйДиапазон ИЗ ДиапазоныНомеров ГДЕ &Номер МЕЖДУ ДиапазоныНомеров.НачалоДиапазона И ДиапазоныНомеров.КонецДиапазона |
|||
24
Coldboy
03.07.12
✎
15:07
|
А потом определить, ну это тоже вариант, просто представьте, будет 1000 стрчоек, и каждый раз лезть запросом, это логично, чем получить оидн раз ТЗ по Диапазонам и там копаться?
|
|||
25
unregistered
03.07.12
✎
15:30
|
(24) >> каждый раз лезть запросом
Зачем? Одним запросом всё сделать, а не запросами в циклах. "ВЫБРАТЬ | ТаблицаНомеров.Номер, | ЕСТЬNULL(ДиапазоныНомеров.Ссылка, "Фиг знает что за диапазон") КАК ДиапазонНомеров | ИЗ | &ТаблицаНомеров КАК ТаблицаНомеров | ЛЕВОЕ СОЕДИНЕНИЕ ДиапазоныНомеров КАК ДиапазоныНомеров | ПО (ТаблицаНомеров.Номер МЕЖДУ ДиапазоныНомеров.НачалоДиапазона И ДиапазоныНомеров.КонецДиапазона)" |
|||
26
fisher
03.07.12
✎
15:35
|
(25) +1
|
|||
27
Coldboy
03.07.12
✎
15:41
|
ТелефонА ТелефонВ у меня есть грубо говоря еще время, иисходя какому диапазону принадлежит телефонВ, нужно мне смотреть цену оттуда и считать. вот.
А что я получу вашим запросом? |
|||
28
Coldboy
03.07.12
✎
15:44
|
Хотя вашу мысль я понял, буду пробывать.
|
|||
29
fisher
03.07.12
✎
15:45
|
(27) Запросом ты получишь ответ на сабжевый вопрос. Если тебе еще чего-то надо - нормально описывай задачу. Если цена у тебя прибита к диапазону, то её ты и получишь для каждой строчки. Бери и считай на здоровье.
|
|||
30
Coldboy
03.07.12
✎
15:46
|
(29) я все понял как вы хотите, просто я думал сначала посмотрев, какой это вызов местный или нет, лезть в те группы и уже тока там работать. Данные телефонА и телефонВ я беру из регистра сведений.
|
|||
31
zladenuw
03.07.12
✎
15:48
|
если нужно смотреть откуда именно. то берешь примерно как в (10). загоняешь в массив или куда то и смотришь откуда тебе нужно брать данные. вообщем фильтруешь
|
|||
32
zladenuw
03.07.12
✎
15:49
|
как структура РС ?
|
|||
33
МихаилМ
03.07.12
✎
15:50
|
сначала разберите на отдельные поля зона,город/оператор,номер
потом считайте биллинг. |
|||
34
unregistered
03.07.12
✎
16:28
|
(27) Формулируй полностью задачу, если хочешь получить полный ответ.
Вопрос в (0) был об ОДНОМ номере, для которого надо найти диапазон. В (24) вдруг неожиданно выясняется, что номеров может быть 1000. В (27) приплыли еще к одной сущности - ценам. А по сути одним запросом можно получить всё что ты хочешь, начиная с определения типа вызова (местный/не местный) и заканчивая ценами и всем, что там у тебя навешано на направления/диапазоны. |
|||
35
Никола_
Питерский 03.07.12
✎
16:32
|
Гыыыы биллинг на 1С )))) ну ну, давайте давайте !
|
|||
36
Mikeware
03.07.12
✎
16:43
|
восхищают дятлы, бросающиеся что-то там писать, не изучив предмет....
|
|||
37
Coldboy
03.07.12
✎
17:40
|
(34) думал указаЛ, что не 1 стрчока, а 1000.
(35) ну ка порадуй, чем это хуже? (36) это ты щас про кого ? |
|||
38
Coldboy
03.07.12
✎
17:43
|
(32) примерно так и делаю. хотел бы послушатЬ, а какие еще есть подоходы.
(33) так тоже делается. тока я смотрю можно и без разбора делать. |
|||
39
Coldboy
03.07.12
✎
17:45
|
(35) по факту что такое билинг? это система для снятие денег со счета человека, грубо говоря большой счетчик для каждого, я же просто детализацию хочу видеть.
|
|||
40
МихаилМ
03.07.12
✎
17:49
|
(38)
нормализация данных - основа испольхования реляционных бд. это первое, что читают в основах построенния рбд. |
|||
41
Bida
03.07.12
✎
18:47
|
(0) Я бы сделал иначе. Ввел РС.
В нем: индекс|длина возможного номера|описание твоего объекта (много нужных справочных полей: станция, подстанция, местный/неместный, цена, адрес, прочее) Пример: 844355|10|тут описания в колонках объекта|подстанция 55|лубянка, 12|55 рублей минута Потом запросом искал бы по признаку длина номера плюс среди индексов (на выходе всегда одну запись получу). При больших объёмах таблицы (например, маршрутизация всей России) будет быстро. При маленьких объёмах быстрее прямым поиском. |
|||
42
Coldboy
04.07.12
✎
09:18
|
(41) немного не понял, мб вы имел виду
844|3|55|551231|0.30| ну ттута первое это определение области|код города|номер станици|номер телефона|цена за минуту. |
|||
43
Coldboy
04.07.12
✎
09:18
|
я тоже думаю ввести РС, или же все данные уже в отдельной SQL бд хранить.
|
|||
44
eromanov
04.07.12
✎
09:35
|
(0) Через что прикрутили телефонию к 1С?
|
|||
45
Coldboy
04.07.12
✎
09:40
|
(0) не через че. Просто Imss формирует файлы, с отчетом о вызовах, и решили попробывать и в 1С посчитать, посмотреть какие числа получаются + сделать удобный механизм для добавления направлений, скидок на звонки и тд и тп.
|
|||
46
Bida
04.07.12
✎
17:25
|
(42) Нет, первое поле именно индекс. По нему осуществляется поиск на первое вхождение. Второй колонкой надо бы дабавить ещё длину кода (5, в данном случае) для отбора.
Зная длину номера (10 символов) и длину кода, по запросу легко получить нужный индекс. А по нему все параметры строки. |
|||
47
Coldboy
05.07.12
✎
12:05
|
А можно поступить проще на номера как на уникальные числа смотреть и смотреть в каком диапазоне, а там уже и направление определять.
Но спасибо всем за помощь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |