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