Поиск владельца по части номера телефона /не менее 6 цифровых символов/ в БП, ЗУП и Альфа5

После очередной SMS рассылки звонит клиент и очень просит удалить его номер телефона из последующих рассылок. Он не представляется и возникает необходимость найти его по номеру телефона для пометки, предотвращающей попадание его номера в последующие рассылки. Иногда коллеги тебе сообщают: звонил клиент и оставил свой номер телефона.  В этих случаях поможет отчет который найдет владельца по номеру телефона в базах 1С на платформе v8  в "Альфа-Авто 5", БП, ЗиУП /ЗУП/. Отчеты предназначены для поиска Владельца по телефонному номеру или части телефонного номера — не менее 6 последних цифр. Можно копи-пастить номер для поиска в текстовом формате в месте с мусором: "/", "", "(", ")", "-", "." и т.д. Отчет для БП и ЗУП работает в толстом клиенте и на управляемых формах в БП 3.0 /на УФ в ЗУП не тестил/.

 Можно банально искать номер запросом из «Консоли запросов» /пример для Альфы5″/:

ВЫБРАТЬ
КонтактнаяИнформация.Объект КАК Контрагент,
КонтактнаяИнформация.Поле5 КАК Телефон
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Поле5 = &Телефон
И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
И КонтактнаяИнформация.Поле5 <> ""

/для бухгалтерии и ЗУП строку «Поле5» заменить на «Представление»/
Проблема в том, что нужно точно угадать в каком формате записан номер: +7(***)***-**-** или ***-**-**
или 8(***)***-**-** или +7(****)**-**-** или 8(   )******.**.** и т.д.
Можно ввести жесткий формат для записи номеров телефонов, а как быть с уже записанными 10тыс. номерами?
Самый точный поиск: выбрать все номера с владельцами, перевести номера в только цифровой формат и искать по этой супер таблице текущий номер/кусок номера/. Но это будет очень не быстро. Если допустить незначительную погрешность /когда номер в базе записан в нетрадиционном формате, например: *.**.**.* и т.д./
то можно искать номер на входящие в него цифровые блоки. например: блок1=»***» , блок2=»**» , блок3=»**» и т.д.
В этом случае скорость поиска значительно увеличится.  Для поиска, у введенного номера будут удалены «+7» и первая «8» если номер начинается на «88». Выделяются цифровые символы и они разбиваются на блоки поиска. Должно остаться не менее 6 цифровых символов номера. Т.е. 6 последних цифр будет достаточно для поиска.
В модуле объекта /для Альфы5/ есть закомментированный пример вытягивания номера из внешнего источника /объект конфигурации «Внешний источник»/. Найденые косяки в личку.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *