Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:53

Маска для телефона (различные варианты)

Автор Алексей_1985_06, 03 июн 2021, 19:02

0 Пользователей и 3 гостей просматривают эту тему.

Алексей_1985_06

Дорогие форумчане всем привет! Подскажите как сделать маску для нескольких вариантов телефона: сотовый как +7 (999) 876-56-45 и домашний как 347-87-99. В поле ввода (тип: строка) создал маску: + 7 (999) 999-99-99; 999-99-99, но заполняется только первый вариант всегда..... Как сделать чтобы можно было вводит разные варианты?

Ивашка

Цитата: Алексей_1985_06 от 03 июн 2021, 19:02
Дорогие форумчане всем привет! Подскажите как сделать маску для нескольких вариантов телефона: сотовый как +7 (999) 876-56-45 и домашний как 347-87-99. В поле ввода (тип: строка) создал маску: + 7 (999) 999-99-99; 999-99-99, но заполняется только первый вариант всегда..... Как сделать чтобы можно было вводит разные варианты?
попробуйте в маске написать 9 (999) 999 99 99

Алексей_1985_06

Цитата: Ивашка от 03 июн 2021, 19:26
Цитата: Алексей_1985_06 от 03 июн 2021, 19:02
Дорогие форумчане всем привет! Подскажите как сделать маску для нескольких вариантов телефона: сотовый как +7 (999) 876-56-45 и домашний как 347-87-99. В поле ввода (тип: строка) создал маску: + 7 (999) 999-99-99; 999-99-99, но заполняется только первый вариант всегда..... Как сделать чтобы можно было вводит разные варианты?
попробуйте в маске написать 9 (999) 999 99 99

Ивашка Спасибо Вам за ответ, но к сожалению не получилось :-( все равно при вводе телефона вида: 347 87 66 получается: 3 (478) 766.

Ивашка

Цитата: Алексей_1985_06 от 03 июн 2021, 19:40
Цитата: Ивашка от 03 июн 2021, 19:26
Цитата: Алексей_1985_06 от 03 июн 2021, 19:02
Дорогие форумчане всем привет! Подскажите как сделать маску для нескольких вариантов телефона: сотовый как +7 (999) 876-56-45 и домашний как 347-87-99. В поле ввода (тип: строка) создал маску: + 7 (999) 999-99-99; 999-99-99, но заполняется только первый вариант всегда..... Как сделать чтобы можно было вводит разные варианты?
попробуйте в маске написать 9 (999) 999 99 99
ну или программно,например при каком то событии
&НаКлиенте
Процедура НомераТелефоновТипНомераПриИзменении(Элемент)   

СтрокаТабличнойЧасти=Элементы.НомераТелефонов.ТекущиеДанные;
Если СтрокаТабличнойЧасти.ТипНомера =
ПредопределенноеЗначение("Перечисление.ТипТелефона.СотовыйНомер") тогда
СтрокаТабличнойЧасти.НомерТелефона.Маска=("8(999)999-99-99");
Иначе
СтрокаТабличнойЧасти.НомерТелефона.Маска=("99-99-99");
КонецЕсли;   

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


Ивашка Спасибо Вам за ответ, но к сожалению не получилось :-( все равно при вводе телефона вида: 347 87 66 получается: 3 (478) 766.

LexaK

можно пойти по другому варианту
из поля ввода убрать маску
а уже после ввода номера, применять ту или иную маску
вот какой-то пример
на ввод коротких 7-цифр и длинных 10-цифр номеров
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: LexaK от 04 июн 2021, 11:28
можно пойти по другому варианту
из поля ввода убрать маску
а уже после ввода номера, применять ту или иную маску
вот какой-то пример
на ввод коротких 7-цифр и длинных 10-цифр номеров


LexaK то что нужно! Спасибо Вам огромное за помощь!!!


Алексей_1985_06

Цитата: LexaK от 04 июн 2021, 11:28
можно пойти по другому варианту
из поля ввода убрать маску
а уже после ввода номера, применять ту или иную маску
вот какой-то пример
на ввод коротких 7-цифр и длинных 10-цифр номеров

LexaK извините что надоедаю с одним и тем же вопросом. но никак не могу разобраться почему при записи маска "слетает" т.е при вводе номера все работает маска отрабатывает как надо, а при записи - в поле ввода получается значение которое введено (маска не работает). Подскажите в чем может быть проблема?

#Область Работа_с_маской_телефона

&НаКлиенте
Процедура ТелефонИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)

Элементы.Телефон.Маска = "";

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

&НаКлиенте
Процедура ТелефонПриИзменении(Элемент)

Если СтрДлина(Запись.Телефон) = 0 Тогда
Элементы.Телефон.Маска = "";
ИначеЕсли СтрДлина(Запись.Телефон) = 4 Тогда
Элементы.Телефон.Маска = "99-99";
ИначеЕсли СтрДлина(Запись.Телефон) = 7 Тогда
Элементы.Телефон.Маска = "999-99-99";
ИначеЕсли СтрДлина(Запись.Телефон) = 10 Тогда
Элементы.Телефон.Маска = "+7 (999) 999-99-99";
Иначе
Элементы.Телефон.Маска = "";
КонецЕсли;

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

&НаКлиенте
Процедура ТелефонОчистка(Элемент, СтандартнаяОбработка)
Элементы.Телефон.Маска = "";
КонецПроцедуры

#КонецОбласти



LexaK

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

еще как вариант используйте поле/реквизит ТипНомера
Городской
Мобильный
при выборе типа устанавливаете нужную маску
при открытии формы, так-же проверяете ТипНомера устанавливаете маску на поле телефона
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: LexaK от 07 июн 2021, 10:27
так маска это вроде как формат/оформление текстовой строки,
сама текстовая строка хранится в базе, а при выводе на форму в элемент получает нужную (их может быть множество) маску
если вам надо именно результат преобразования текста с маской то отдельно получайте из элемента формы, свойство .ТекстРедактирования
только потом его надо без маски выводить (скорее всего)

еще как вариант используйте поле/реквизит ТипНомера
Городской
Мобильный
при выборе типа устанавливаете нужную маску
при открытии формы, так-же проверяете ТипНомера устанавливаете маску на поле телефона
LexaK спасибо большое! Все понял....

Алексей_1985_06

Цитата: Алексей_1985_06 от 07 июн 2021, 18:34
Цитата: LexaK от 07 июн 2021, 10:27
так маска это вроде как формат/оформление текстовой строки,
сама текстовая строка хранится в базе, а при выводе на форму в элемент получает нужную (их может быть множество) маску
если вам надо именно результат преобразования текста с маской то отдельно получайте из элемента формы, свойство .ТекстРедактирования
только потом его надо без маски выводить (скорее всего)

еще как вариант используйте поле/реквизит ТипНомера
Городской
Мобильный
при выборе типа устанавливаете нужную маску
при открытии формы, так-же проверяете ТипНомера устанавливаете маску на поле телефона
LexaK спасибо большое! Все понял....

LexaK прошу у Вас опять помощи! Необходимо хранить телефоны сотрудников (писал об этом ранее) по Вашей рекомендации сделал РС "Телефоны" для хранения этой информации, при открытии элемента справочника "Сотрудники" в ТЧ (запросом) получаю все эти номера на отдельной закладке в ТЧ, при вводе, изменении или удалении номера телефона из ТЧ, в процедуре <При записи>, в РС создается новый набор записей телефонов из ТЧ справочника "Сотрудники" :

НаборЗаписей = РегистрыСведений.Телефоны.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Сотрудник.Установить (Ссылка);
Для каждого Строка Из Телефоны Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Сотрудник = Ссылка;
НоваяЗапись.Телефон = Строка.Телефон;
НоваяЗапись.ТипНомера = Строка.ТипНомера;
НоваяЗапись.СтатусНомера = Строка.СтатусНомера;
КонецЦикла;
НаборЗаписей.Записать(Истина);


Но загвоздка в том, что не получается в ТЧ справочника вводить номера в соответствии с маской... получается что я ввожу номер 89813334455 и он в таком виде отображается на форме списка РС. Подскажите как при вводе номера в строке ТЧ (справочника), сделать маску в соответствии с выбранным типом номера телефона? :dfbbdrfb::dfbbdrfb::dfbbdrfb:

P.S.
В РС "Телефоны" данная процедура отрабатывает как надо, все номера после записи отображаются на форме списка в соответствии с заданной маской:
Процедура МаскаТелефона();

Если  Запись.ТипНомера = ПредопределенноеЗначение("Перечисление.ТипНомера.Мобильный") Тогда // если номер мобильный
Элементы.Телефон.Маска = "+7 (999) 999-99-99";
ИначеЕсли  Запись.ТипНомера = ПредопределенноеЗначение("Перечисление.ТипНомера.ГАТС") Тогда   // если номер городской
Элементы.Телефон.Маска = "999-99-99";
ИначеЕсли  Запись.ТипНомера = ПредопределенноеЗначение("Перечисление.ТипНомера.Внутренний") Тогда   // если номер внутренний
Элементы.Телефон.Маска = "99-99"; 
ИначеЕсли  Запись.ТипНомера = ПредопределенноеЗначение("Перечисление.ТипНомера.АТСР") Тогда   // если номер АТСР
Элементы.Телефон.Маска = "99-99";
ИначеЕсли  Запись.ТипНомера = ПредопределенноеЗначение("Перечисление.ТипНомера.АТСО") Тогда   // если номер АТСО
Элементы.Телефон.Маска = "99-99";
Иначе
Элементы.Телефон.Маска = "";
КонецЕсли;

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск