Уведомления
Очистить все

Как привести номер телефона к виду с разделителями в 1С

2 Записи
1 Пользователи
0 Likes
1,921 Просмотры
65-150 Okolokompa Форум
(@kalininalex)
Reputable Member
Присоединился: 4 года назад
Записи: 160
Создатель темы  

Как преобразовать телефонный номер в в виде строки (представление) с разделителями в 1С? Как разбить номер телефона на блоки: код города, код страны и сам номер телефона в 1С?

Ниже укажу код, который преобразует номер телефона к виду: +7 (123) 456-78-90.

ТекНомерТелефона = ПеременнаяСодержащаяНомерТелефона_ТипСтрока; 
ТекНомерТелефона = СокрЛП(ТекНомерТелефона);
ТекНомерТелефона = СтрЗаменить(СтрЗаменить(ТекНомерТелефона, Символы.НПП, ""), " ", ""); 
ТекНомерТелефона = СтрЗаменить(ТекНомерТелефона, "+", "");  
			
ДлинаТелефон = СтрДлина(ТекНомерТелефона);
			
Если ДлинаТелефон >= 11 Тогда
				
	МассивНомерТелефона = Новый Массив;
	МассивНомерТелефона.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 1, 2));
	МассивНомерТелефона.Вставить(0, "-");
	МассивНомерТелефона.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 3, 2));
	МассивНомерТелефона.Вставить(0, "-");
	МассивНомерТелефона.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 6, 3));
				
	СтрокаНомерТелефона = СтрСоединить(МассивНомерТелефона);
				
				
	МассивКодГорода = Новый Массив;
	МассивКодГорода.Вставить(0, ")");
	МассивКодГорода.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 9, 3));
	МассивКодГорода.Вставить(0, "(");
				
	СтрокаКодГорода = СтрСоединить(МассивКодГорода);
				
	СтрокаКодСтраны = Лев(ТекНомерТелефона, ДлинаТелефон - 10);
	СтрокаКодСтраны = СтрШаблон("+%1", СтрокаКодСтраны);				
				
	НомерТелефонаПредставление = СтрокаКодСтраны + " " + СтрокаКодГорода + " " + СтрокаНомерТелефона; 
				
Иначе
	НомерТелефонаПредставление = "+" + ТекНомерТелефона;
КонецЕсли;

   
Цитата
65-150 Okolokompa Форум
(@kalininalex)
Reputable Member
Присоединился: 4 года назад
Записи: 160
Создатель темы  

Ниже приведу этот же код, но доработанный, с разбивкой телефонного номера на блоки для загрузки в 1С ЗУП.

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

Запишем номер телефона физическому лицу в 1С ЗУП.

СпрФЛ_Объект = Ссылка_ФизическоеЛицо.ПолучитьОбъект();

ТекНомерТелефона = ПеременнаяСодержащаяНомерТелефона_ТипСтрока; 
ТекНомерТелефона = СокрЛП(ТекНомерТелефона);
ТекНомерТелефона = СтрЗаменить(СтрЗаменить(ТекНомерТелефона, Символы.НПП, ""), " ", ""); 
ТекНомерТелефона = СтрЗаменить(ТекНомерТелефона, "+", "");  
			
ДлинаТелефон = СтрДлина(ТекНомерТелефона);
			
Если ДлинаТелефон >= 11 Тогда
				
	МассивНомерТелефона = Новый Массив;
	МассивНомерТелефона.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 1, 2));
	МассивНомерТелефона.Вставить(0, "-");
	МассивНомерТелефона.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 3, 2));
	МассивНомерТелефона.Вставить(0, "-");
	МассивНомерТелефона.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 6, 3));
				
	СтрокаНомерТелефона = СтрСоединить(МассивНомерТелефона);
				
				
	МассивКодГорода = Новый Массив;
	МассивКодГорода.Вставить(0, ")");
	МассивКодГорода.Вставить(0, Сред(ТекНомерТелефона, ДлинаТелефон - 9, 3));
	МассивКодГорода.Вставить(0, "(");
				
	СтрокаКодГорода = СтрСоединить(МассивКодГорода);
				
	СтрокаКодСтраны = Лев(ТекНомерТелефона, ДлинаТелефон - 10);
	СтрокаКодСтраны = СтрШаблон("+%1", СтрокаКодСтраны);				
	
	// Представление номера телефона
	НомерТелефонаПредставление = СтрокаКодСтраны + " " + СтрокаКодГорода + " " + СтрокаНомерТелефона; 
				
	ПоляТелефона = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();
	ПоляТелефона.КодГорода     = СтрокаКодГорода;
	ПоляТелефона.КодСтраны     = СтрокаКодСтраны;
	ПоляТелефона.НомерТелефона = СтрокаНомерТелефона;
	ПоляТелефона.Представление = НомерТелефонаПредставление;
	ПоляТелефона.Добавочный    = "";
	ПоляТелефона.Комментарий   = "";
	
	// Телефонный номер разбитый на блоки
	ЗначенияПолей = ПоляТелефона;
				
Иначе
	// Представление номера телефона
	НомерТелефонаПредставление = "+" + ТекНомерТелефона;
	// Телефонный номер разбитый на блоки
	ЗначенияПолей = НомерТелефонаПредставление; 
КонецЕсли;       			
			
ТелефонХМЛ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ЗначенияПолей, НомерТелефонаПредставление, ТипТелефон);
ТелефонJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ТелефонХМЛ);
// Можно и так, но я сделаю так, как указано в строке ниже. УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(СпрФЛ_Объект, ТелефонJSON, ВидКИ, ТипТелефон,, ТекДата);
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(СпрФЛ_Объект, ТелефонJSON, ВидКИ, ТекДата, Истина);

СпрФЛ_Объект.Записать();

   
ОтветитьЦитата
Поделиться: