![]() |
![]() |
![]() |
|
Есть в 1С функция сравнения строки по маске | ☑ | ||
---|---|---|---|---|
0
Zlodey1С
16.12.08
✎
08:25
|
Допустим необходимо ввести номер автомобиля но юзер тупой и не знает что надо вводить так Н666НН38 ну или накрайняк упростим ему задачу и пусть вводит так ННН66638. Но он тупой и он вводит так Н38ННН666.
Пришлось писать свои функции хотя вроде и задача простая. |
|||
1
Zlodey1С
16.12.08
✎
08:26
|
Выкладываю свой вариант реализации. если у кого есть свой делитесь:
Процедура НаименованиеОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) Если СтрДлина(Текст) > 0 Тогда ПроверкаСоответствияНомера(Текст); Иначе ГосНомер=""; Регион=""; КонецЕсли; КонецПроцедуры Процедура ПроверкаСоответствияНомера(СтрокаНомера) Маска_1=Строка("10001100"); Маска_2=Строка("11100000"); ПроверяемаяСтрока=""; ЧислоИтераций=СтрДлина(СтрокаНомера); Итерация=0; Пока Итерация < ЧислоИтераций Цикл Итерация=Итерация+1; ПроверяемыйСимвол=Сред(строкаНомера,Итерация,1); ПроверяемаяСтрока=ПроверяемаяСтрока+УзнатьТипСимвола(ПроверяемыйСимвол); КонецЦикла; Если ПроверяемаяСтрока=Маска_1 Тогда Регион=Прав(СтрокаНомера,2); ГосНомер=ВРег(Лев(СтрокаНомера,6)); ИначеЕсли ПроверяемаяСтрока=Маска_2 Тогда врСтрока = СтрокаНомера; врРегион=Прав(врСтрока,2); врНомер=Сред(врСтрока,4,3); врНомерБуквы_1=Лев(врСтрока,1); врНомерБуквы_2=Сред(врСтрока,2,2); Регион=врРегион; ГосНомер=ВРег(врНомерБуквы_1+врНомер+врНомерБуквы_2); Иначе Предупреждение("Неверный формат номера, необходимо ввести номер автомобиля как указано в документах. "+Символы.ПС+"Гос. номер вводится в таком виде: ХaaaХХAA или ХХХaaaAA,"+Символы.ПС+"где Х и ХХ или ХХХ - буквенные символы номера, aaa - числовые символы номера, AA - номер региона."); КонецЕсли; КонецПроцедуры Функция УзнатьТипСимвола(Символ); СтрокаАлфавита="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"; Результат=Найти(СтрокаАлфавита,Символ); Если Результат > 0 Тогда Возврат 1; Иначе Возврат 0; КонецЕсли; КонецФункции |
|||
2
smaharbA
16.12.08
✎
08:26
|
Чего хотел то ?
|
|||
3
Zlodey1С
16.12.08
✎
08:30
|
(2) Ты как так быстро отвечаешь?
|
|||
4
ASU_Diamond
16.12.08
✎
08:37
|
а маска в поле ввода не подходит?
|
|||
5
Stepa86
16.12.08
✎
10:17
|
Есть маска в поле ввода, есть выражение ПОДОБНО в запросе и есть RegExpы - всяко лучше ручного парсанья строки
|
|||
6
Armando
16.12.08
✎
10:23
|
||||
7
Zlodey1С
16.12.08
✎
10:56
|
Маска в поле ввода не канает т.к там только латинский алфавит
В строке маски допустимо использование следующих специальных символов: ! - любой введенный символ преобразуется в верхний регистр; 9 - допустимо ввести произвольный символ цифры; # - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел; N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры); U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр; X (латинского алфавита) - допустимо ввести произвольный символ; ^ - не допустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка; h - допустим ввод символов обозначения шестнадцатеричных цифр; @ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел. |
|||
8
Zlodey1С
16.12.08
✎
10:57
|
Запрос по строке не понимаю как использывать. А про RegExpы можно подумать.
|
|||
9
Defender aka LINN
16.12.08
✎
11:08
|
(7) А что, у нас остались номера с кириллицей? 0_о
|
|||
10
Zlodey1С
16.12.08
✎
11:19
|
(9) А вдруг
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |