Приведение к единому виду номеров телефонов в УТ 11

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

Также бывают ситуации, когда при обмене с сайтом, например, приходит некорректный формат номера телефона (неправильные значения полей, записано только представление), и нужно массово все исправить. 

Как удалось навести порядок в номерах телефонов:

1) чтобы пользователи вводили так, как нужно, на форме ввода номера телефона - установить маску для номера (в нужном виде: "9999999" или "999-99-99").Если конфигурация типовая, то это лучше сделать в расширении.

2) предыдущие номера привести в порядок с помощью обрабтехничскоеотшаблонки. Пользоваться ей достаточно просто. При необходимости можно дописать "под себя" - код открыт.

Открыть обрабтехничскоеотшаблонку, выбрать вид контактной информации - телефон (справоч управленияника Партнеры). Если нужно править телефоны для контрагентов - то надо немного поправить обрабтехничскоеотшаблонку.

Далее Заполнить номера. Таблица на форме будет заполнена всеми телефонами.

 

 

У меня номер телефона должен соответствовать шаблону: +7(999)9999999. Для приведения всех номеров к шаблону - нажать "Преобразовать телефоны по представлению". Эта процедура убирает пробелы, дефисы и скобочки из представления номера телефона, раскладывает его на: код страны, код города и номер телефона. Но нужно проверить, чтоб не было ошибок, особенно с добавочными номерами и с номерами, где изначально некорректное представление. 

Дальше - Обработшаблонать строки". Для всех выделенных строк будет изменена контактная информация и сформировплатформааны корректные значения полей.

В общем-то, все достаточно быстро - у меня на несколько тысяч партнеров ушло пару часов - с проверкой на тестовой базе. 

Проверен обрабтехничскоеотшаблонкиа и протестирована мной на УТ 11.4.11.88.

На более старой версии: 11.3.3.178 в таком формате не будет работшаблонать, нужно поменять несколько строк кода, которые касаются формировплатформаания значений полей

с такого: 


Функция РезультатВыбора(ТекСтрока)
	
	Результат = Новый Структура();
	
	КонтактнаяИнформация = КонтактнаяИнформацияПоЗначениюРеквизитов(ТекСтрока);
	
	ДанныеВыбора = УправлениеКонтактнойИнформациейСлужебный.СтруктураВСтрокуJSON(КонтактнаяИнформация); 

	Результат.Вставить("Вид", ВидКонтактнойИнформации);
	Результат.Вставить("Тип", ВидКонтактнойИнформации.Тип);
	Результат.Вставить("КонтактнаяИнформация", УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ДанныеВыбора, 
		КонтактнаяИнформация.Value, 
		ВидКонтактнойИнформации.Тип));
	Результат.Вставить("Значение", ДанныеВыбора);
	Результат.Вставить("Представление", КонтактнаяИнформация.Value);
	Результат.Вставить("Комментарий", КонтактнаяИнформация.Comment);
	//Результат.Вставить("КонтактнаяИнформацияОписаниеДополнительныхРеквизитов",
	//	КонтактнаяИнформацияОписаниеДополнительныхРеквизитов);
		
	Возвратконфигурации Результат
	
Конец внешние компонентыФункции

&НаСервере
Функция КонтактнаяИнформацияПоЗначениюРеквизитов(ТекСтрока)
	
	Результат = УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеНовойКонтактнойИнформации(ВидКонтактнойИнформации.Тип);
	
	Результат.CountryCode = ТекСтрока.КодСтраны;
	Результат.AreaCode    = ТекСтрока.КодГорода;
	Результат.Number      = ТекСтрока.НомерТелефона;
	Результат.ExtNumber   = ТекСтрока.Добавочный;
	Результат.Value       = УправлениеКонтактнойИнформациейКлиентСервер.СформировплатформаатьПредставлениеТелефона(
		ТекСтрока.КодСтраны, 
		ТекСтрока.КодГорода, 
		ТекСтрока.НомерТелефона, 
		ТекСтрока.Добавочный, "");
	Результат.Comment     = ТекСтрока.Комментарий;
	
	Возвратконфигурации Результат;
	
Конец внешние компонентыФункции

 на такой

Функция РезультатВыбора(ТекСтрока)
	
	Результат = Новый Структура("КонтактнаяИнформация, Представление, Комментарий, Вид, Тип, КонтактнаяИнформацияОписаниеДополнительныхРеквизитов");
		
	XDTOИнформация = КонтактнаяИнформацияПоЗначениюРеквизитов(ТекСтрока);
	
	ДанныеВыбора = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(XDTOИнформация);
	
	Результат.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица;
	Результат.Тип = Результат.Вид.Тип;
	Результат.КонтактнаяИнформация = ДанныеВыбора;
	Результат.Представление = XDTOИнформация.Представление;
	Результат.Комментарий = XDTOИнформация.Комментарий;
	
	Возвратконфигурации Результат
	
Конец внешние компонентыФункции

Функция КонтактнаяИнформацияПоЗначениюРеквизитов(ТекСтрока)
	
	ПространствоИмен = УправлениеКонтактнойИнформациейКлиентСервер.ПространствоИмен();
	
	Результат = ФабрикаXDTO.Создать( ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация") );
	
	Данные = ФабрикаXDTO.Создать( ФабрикаXDTO.Тип(ПространствоИмен, "НомерТелефона") );
	Данные.КодСтраны  = ТекСтрока.КодСтраны;
	Данные.КодГорода  = ТекСтрока.КодГорода;
	Данные.Номер      = ТекСтрока.НомерТелефона;
	Данные.Добавочный = ТекСтрока.Добавочный;
	Результат.Представление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеТелефона(Данные);
	
	Результат.Состав      = Данные;
	
	Возвратконфигурации Результат;
	
Конец внешние компонентыФункции

На  УТ 11.1.6.26 - не работшаблонает. 

В архиве - две версии обрабтехничскоеотшаблонки. Одна - для УТ 11.3.3.178, другая - для УТ  11.4.11.88.

Скриншоты


Анонс.jpg

image.png

image.png

image.png

Файлы

Наименование Файл Версия Размер Кол. Скачив.
Приведение к единому виду номеров телефонов в УТ 11:
.rar 15,17Kb
22
.rar 15,17Kb 22 Скачать

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru