gifts2017

Приведение телефонных номеров в порядок

Опубликовал Осипов Сергей (fixin) в раздел Обработки - Обработка справочников

Код для консоли запросов написан для типовых конфигураций с регистром «Контактная информация».
Позволяет унифицировать телефоны и привести их в международный формат с кодом +7.

Используется «Консоль запросов + Обработчик»:

В запрос нужно вставить текст запроса.

В код нужно вставить алгоритм обработки.

Параметры заполнить как на картинке:

Обычно есть несколько видов с наименованием «Телефон», нужно попробовать все по очереди.

Нажать кнопку «Выполнить», результат запроса выгрузится в таблицу.

Далее нажать кнопку «Выполнить обработку», номера будут обработаны и перезаписаны.

 

Выдается протокол, где сообщается, какие номера обработаны, какие нет:

 

Код запроса:

ВЫБРАТЬ

       КонтактнаяИнформация.Объект,

       КонтактнаяИнформация.Тип,

       КонтактнаяИнформация.Вид,

       КонтактнаяИнформация.Представление

ИЗ

       РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

ГДЕ

       КонтактнаяИнформация.Тип = &Тип

       И КонтактнаяИнформация.Вид = &Вид

       И Подстрока(Представление, 1, 1) <> ""

Код обработки:

ИсхСтр = СокрЛП(Рез.Представление);

РезСтр = "";

Если ИсхСтр <> "" Тогда

       Для Инд = 1 По СтрДлина(ИсхСтр) Цикл

             Симв = Сред(ИсхСтр, Инд, 1);

             Если Найти("0123456789", Симв) = 0 Тогда

                    Продолжить;

             КонецЕсли;

             РезСтр = РезСтр + Симв;

       КонецЦикла;

      

       Если СтрДлина(РезСтр) = 10 Тогда

             РезСтр = "+7" + РезСтр;

       КонецЕсли;

       Если СтрДлина(РезСтр) = 11 И Лев(РезСтр, 1) = "8" ИЛИ Лев(РезСтр, 1) = "7" Тогда

             РезСтр = "+7" + Сред(РезСтр,2);

       КонецЕсли;

      

       ПредставлениеОбъекта = "" + ТипЗнч(Рез.Объект) + ": " + Рез.Объект;

       Если СтрДлина(РезСтр) <> 12 Тогда

             Сообщить(ПредставлениеОбъекта + " Неадеватный номер: " + ИсхСтр + " Пытались: " + РезСтр);

       ИначеЕсли РезСтр <> ИсхСтр Тогда

             Сообщить(ПредставлениеОбъекта + " Замена: " + ИсхСтр + " На: " + РезСтр);

             МЗ = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();

             МЗ.Объект = Рез.Объект; МЗ.Тип = Рез.Тип; МЗ.Вид = Рез.Вид;

             МЗ.Прочитать();

             МЗ.Объект = Рез.Объект; МЗ.Тип = Рез.Тип; МЗ.Вид = Рез.Вид;

             МЗ.Представление = РезСтр;

             МЗ.Записать();

       КонецЕсли;

      

      

КонецЕсли;

 

Конечно, можно было бы эту полезную вещь обернуть в обработку, но некогда, если кто сделает, высылайте мне на почту, вставлю в статью.

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. leles 19.04.14 21:56
Какая у вас консоль запросов интересная. С обработкой выборки, у меня такой нет.
Поделитесь, пожалуйста, буду благодарен.
2. Осипов Сергей (fixin) 21.04.14 10:10
3. Алексей Коноровский (Forest83) 16.06.16 12:27
Спасибо! За консоль на удовольствия перевел)
Еще бы она текст обработчика сохраняла - цены бы не было!))

В моем случае видимо совсем все запущено. Обработчик зациклился.
Но для старта помощь просто огромная!
4. Александр Плюшкин (php5) 17.11.16 22:59
Спасибо за готовый алгоритм, сэкономил немного времени!!!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа