Имя: Пароль:
1C
1С v8
ограничение типа ввода данных
0 ArtYst
 
24.07.12
10:08
помогите как создать функцию которая разрешает вводить символы от 1-9 и от a-z при это если эти же буквы введены по русски(случайно) их также можно, а на все остальные символы запрет.
1 FIXXXL
 
24.07.12
10:13
Расширение поля формы для поля ввода (Form field extension for a text box)
Маска (Mask)
Использование:

Чтение и запись.
Описание:

Тип: Строка. Содержит посимвольную строку маски интерактивного ввода текста в поле.
В строке маски допустимо использование следующих специальных символов:
! - любой введенный символ преобразуется в верхний регистр;
9 - допустимо ввести произвольный символ цифры;
# - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;
N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);
U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;
X (латинского алфавита) - допустимо ввести произвольный символ;
^ - не допустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;
h - допустим ввод символов обозначения шестнадцатеричных цифр;
@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.
При помещении значения из поля ввода с маской в текстовый реквизит, связанный с этим полем ввода, происходит следующее преобразование: на тех позициях, где в маске стоит символ "@", а в строке пробел – пробел удаляется. Если в маске из специальных символов используются только символы "@", то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после последнего непустого блока из символов "@". Например, при маске "@@.@@.@@." текст "41. 2. ." преобразуется в "41.2".
Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\".
Допускается указание нескольких масок в одном параметре. Маски разделяются символом ";". В этом случае использоваться будет та маска, к которой подходит введенный текст.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент
2 FIXXXL
 
24.07.12
10:16
//Проверяет на наличие только латинских букв и цифр(допускаются пробелы и дефис и некоторые спец символы)
Функция СтрокаНаписанаЛатиницейИЦифрами(Знач СтрокаПараметр) Экспорт

   // Русские буквы: 192 и больше

   
   СтрокаПараметр = СокрЛП(СтрокаПараметр);    

   СписокДопустимыхЗначений = Новый СписокЗначений;
   
   СписокДопустимыхЗначений.Добавить(184);
   СписокДопустимыхЗначений.Добавить(168);
   СписокДопустимыхЗначений.Добавить(45);
   СписокДопустимыхЗначений.Добавить(46);
   СписокДопустимыхЗначений.Добавить(32);
   СписокДопустимыхЗначений.Добавить(48);
   СписокДопустимыхЗначений.Добавить(49);
   СписокДопустимыхЗначений.Добавить(50);
   СписокДопустимыхЗначений.Добавить(51);
   СписокДопустимыхЗначений.Добавить(52);
   СписокДопустимыхЗначений.Добавить(53);
   СписокДопустимыхЗначений.Добавить(54);
   СписокДопустимыхЗначений.Добавить(55);
   СписокДопустимыхЗначений.Добавить(56);
   СписокДопустимыхЗначений.Добавить(57);
   
   // Большие латинские буквы: 65 - 90
   СчБ=65;
   Пока СчБ<91 Цикл
       СписокДопустимыхЗначений.Добавить(СчБ);
       СчБ = СчБ+1;
   КонецЦикла;
   
   // Маленькие латинские буквы: 97 - 122    
   СчМ=97;
   Пока СчМ<123 Цикл
       СписокДопустимыхЗначений.Добавить(СчМ);
       СчМ = СчМ+1;
   КонецЦикла;

   Для Сч=1 По СтрДлина(СтрокаПараметр) Цикл
       //числа пропускаем
       Если Найти(":;().,0123456789", Сред(СтрокаПараметр, Сч, 1)) <> 0 Тогда
           Продолжить;
       КонецЕсли;
       
       Код = КодСимвола(СтрокаПараметр,Сч);
       //Если (Код<192) И (СписокДопустимыхЗначений.НайтиПоЗначению(Код) = Неопределено) Тогда
       Если (СписокДопустимыхЗначений.НайтиПоЗначению(Код) = Неопределено) Тогда
           Возврат Ложь;
       КонецЕсли;
   КонецЦикла;

   Возврат Истина;
   
КонецФункции

//Проверяет на наличие только русских букв и цифр(допускаются пробелы и дефис и некоторые спец символы)
Функция СтрокаНаписанаПоРусскиИЦифрами(Знач СтрокаПараметр) Экспорт

   СтрокаПараметр = СокрЛП(СтрокаПараметр);    

   СписокДопустимыхЗначений = Новый СписокЗначений;
   СписокДопустимыхЗначений.Добавить(184);
   СписокДопустимыхЗначений.Добавить(168);
   СписокДопустимыхЗначений.Добавить(45);
   СписокДопустимыхЗначений.Добавить(46);
   СписокДопустимыхЗначений.Добавить(32);
   СписокДопустимыхЗначений.Добавить(48);
   СписокДопустимыхЗначений.Добавить(49);
   СписокДопустимыхЗначений.Добавить(50);
   СписокДопустимыхЗначений.Добавить(51);
   СписокДопустимыхЗначений.Добавить(52);
   СписокДопустимыхЗначений.Добавить(53);
   СписокДопустимыхЗначений.Добавить(54);
   СписокДопустимыхЗначений.Добавить(55);
   СписокДопустимыхЗначений.Добавить(56);
   СписокДопустимыхЗначений.Добавить(57);

   Для Сч=1 По СтрДлина(СтрокаПараметр) Цикл
       //числа пропускаем
       Если Найти(":;().,0123456789", Сред(СтрокаПараметр, Сч, 1)) <> 0 Тогда
           Продолжить;
       КонецЕсли;
       
       Код = КодСимвола(СтрокаПараметр,Сч);
       Если (Код<192) И (СписокДопустимыхЗначений.НайтиПоЗначению(Код) = Неопределено) Тогда
           Возврат Ложь;
       КонецЕсли;
   КонецЦикла;

   Возврат Истина;
   
КонецФункции