В начало

Исправление контактной информации

           

Необходимо создать обработку,  для коррекции записей контактной информации, в частности телефонных номеров так, чтобы номера были в едином формате.

 

Рис. 1. Регистр сведений «Контакты»

Рис. 1. Регистр сведений «Контакты»

 

Рис. 2. Форма обработки

Рис. 2. Форма обработки

 

Листинг 1. Модуль формы обработки

&НаСервере

Процедура ПрочитатьНаСервере()

            //Создаем набор записей

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

            НабЗап = РегистрыСведений.Контакты.СоздатьНаборЗаписей();

           

            //Читаем набор записей

            НабЗап.Прочитать();    

           

            //Создаем таблицу значений и

            //выгружаем в таблицу набор записей

    ТабЗнач = НабЗап.Выгрузить();

           

            //Загружаем целиком таблицу значений в объект формы Регистр

            Этаформа.Регистр.Загрузить(ТабЗнач);

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

 

&НаКлиенте

Процедура Прочитать(Команда)

            ПрочитатьНаСервере();

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

 

&НаКлиенте

Процедура ИсправитьТелефоны(Команда)

            ИсправитьТелефоныНаСервере();

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

 

&НаСервере

Функция ИзвлечьЦифрыИзСтроки(ВхСтр)

            ВыхСтр = "";

           

            //Перебираем посимвольнос входную строку

            Для Поз = 1 По СтрДлина(ВхСтр) Цикл

                        //Берем текущий символ из строки

                        ТекСимвол = Сред(ВхСтр, Поз, 1);                  

                        Если СтрНайти("0123456789", ТекСимвол)<>0 Тогда

                                   ВыхСтр = ВыхСтр + ТекСимвол;

                        КонецЕсли;                 

            КонецЦикла;

           

            Возврат ВыхСтр;

КонецФункции

 

&НаСервере

Функция ФорматНомераТелефона(ВхСтр)

            //Преобразуем к виду +7 (***) ***-**-**  

            Если СтрДлина(ВхСтр) = 7 Тогда                    

                        Возврат "+7 (495) " + Сред(ВхСтр,1,3)+"-"+Сред(ВхСтр,4,2)+"-"+Сред(ВхСтр,6,2);

            ИначеЕсли СтрДлина(ВхСтр) = 10 Тогда

                        Возврат "+7 (" + Сред(ВхСтр,1,3)+") "+Сред(ВхСтр,4,3)+"-"+Сред(ВхСтр,7,2)+"-"+Сред(ВхСтр,9,2);

            ИначеЕсли СтрДлина(ВхСтр) = 11 Тогда         

                        Возврат "+7 (" + Сред(ВхСтр,2,3)+") "+Сред(ВхСтр,5,3)+"-"+Сред(ВхСтр,8,2)+"-"+Сред(ВхСтр,10,2);

            Иначе

                        Возврат ВхСтр;

            КонецЕсли;                 

КонецФункции 

&НаСервере

Процедура ИсправитьТелефоныНаСервере()

            //Создаем набор записей

            НабЗап = РегистрыСведений.Контакты.СоздатьНаборЗаписей();

            //Читаем набор записей

            НабЗап.Прочитать();

            Для Каждого Зап Из НабЗап Цикл      

                        //Ищем телефоны в наборе записей

                        Если СтрНайти(НРег(Зап.ВидКонтактнойИнформации), "телефон")<>0 Тогда

                                   ТолькоЦифры = ИзвлечьЦифрыИзСтроки(Зап.ЗначениеКонтактнойИнформации);

                                   ПравильныйНомер=ФорматНомераТелефона(ТолькоЦифры);

                                   Зап.ЗначениеКонтактнойИнформации = ПравильныйНомер;

                        КонецЕсли;     

            КонецЦикла;

            НабЗап.Записать();

    ПрочитатьНаСервере();

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

 

Рис. 3. Результат исправления контактной информации

Рис. 3. Результат исправления контактной информации