Имя: Пароль:
1C
 
8.2. В поле ввода только латинские символы и цифры
0 Phace
 
23.12.09
15:06
Есть поле ввода, длина фиксированная, 10 символов, может содержать только латинские символы в верхнем ригистре и цифры, у поля ввода поставил маску "UUUUUUUUUU", как сделать проверку на "только латинские символы"?

На 7.7. реализуется элементарно:

Если AnsiToOem(ТекНомер) <> ТекНомер Тогда
   Предупреждение("Ошибка! Номер может содержать только латинские символы!");
   Возврат 0;
КонецЕсли;

Есть ли на 8.2 аналогичный простой метод, или придется проверять вхождение в "1234567890ABCDEFGHIJ...."?
1 butterbean
 
23.12.09
15:20
может проверять на 65< код символа <122 ??
2 Phace
 
23.12.09
15:25
Да, похоже оптимальнее вариантов нет, сейчас сделал побуквенную проверку "КодСимвола()" на вхождение в диапазон 65..90 и 48..57
3 НЕА123
 
23.12.09
16:04
как вариант: можно запросом ПОДОБНО.
насчет скорости не знаю.
4 НЕА123
 
23.12.09
16:11
"[0-9A-Z]"
5 Phace
 
23.12.09
16:44
(3) спасибо, уже влупил так:

&НаКлиенте
Функция ятНеправильноВведенНомерТМЦ(ВыбНомер)
   Для и1 = 1 по СтрДлина(ВыбНомер) Цикл
       ТекКодСимвола = КодСимвола(ВыбНомер, и1);
       Если (ТекКодСимвола < 48) или ((ТекКодСимвола > 57) и (ТекКодСимвола < 65)) или (ТекКодСимвола > 90) Тогда
            Предупреждение("Ошибка! Номер ТМЦ может содержать только цифры и латинские символы!");
            Возврат истина;
       КонецЕсли;
   КонецЦикла;
   
   Возврат ложь;
КонецФункции

&НаКлиенте
Процедура ЗапасыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
   Отказ = ятНеправильноВведенНомерТМЦ(ЭтаФорма.Элементы.Запасы.ТекущиеДанные.НомерТМЦ);
КонецПроцедуры
Основная теорема систематики: Новые системы плодят новые проблемы.