Реквизит маска 1с предприятии

Для 1с поле ввода с типом строка можно применить маску ввода. В 1с маска задает формат представления данных и ограничивает вводимой информации. Это очень удобно бывает во многих жизненных задачках, например ввод телефона, ввод специального кода или представления номера. В 1с маску можно задать как интерактивно «в режиме конфигуратора», так и программно.

Для 1с поле ввода маска доступны следующие форматы ограничители.

Ввод только числовых данных:

* 9 – вводятся только цифры
* # – вводятся цифры и знаки «+» «-» и пробел
* h ввод шестеричных цифр

Ввод цифр и букв:

* @ – ввод символов алфавита, и при этом они будут преобразованы в верхний регистр
* N – разрешен ввод алфавитных символов но уже можно контролировать регистр.
* U – вводи символов алфавита с преобразованием в верхней регистр. Отличие между U и @ не смог найти.
* ! – любой введенный символ автоматический преобразуется к верхнему регистру
* X – разрешен ввод только латиницы

Для запрет ввода символа «^» в 1с поле ввода, необходимо прописать этот символ в маску

В маске могут присутствовать специальные символы «.» , «(», «)», «-» и «,» и некоторые другие, они позволяют форматировать строку.

Например, нам нужно указать, что номер вводится с указанием кода города. То нужно прописать 1с маску ввода «9 (999) 999 99 99» или «9 (999) 999-99-99». Все зависит от требуемого формата представления строки. Или допустим нам нужно ввести формат дополнительного номера накладной типа «код подразделение.месяц.год», тогда маска будет «UUUU.99.9999» или «UUUU/99/9999»

Стоит помнить что, задавая маску – мы обязаны задать её полностью такой длины, какой длины вводится строка. Либо если существуют несколько форматов строки, короткий и длинный – то можно задать две и более масок, через запятую.

Например, вводим сотовый телефон клиента, либо городской (без указания кода города), тогда 1c маска будет 9 (999) 999-99-99;999-99-99


Из справки 1С:

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

Содержание:

1.       Что такое поле Маска ввода

2.       Ограничения в масках ввода в 1С  

1.    Что такое поле Маска ввода

В данной статье будет описано, что такое поле «Маска ввода» в 1С. Также будут приведены все форматы и ограничители, которые доступны в поле «Маска ввода».

Когда в системе 1С есть поле ввода, которое имеет тип «строка», то в таком случае к нему есть возможность применить маску ввода данных. Данная функция отвечает за форматирование внешнего вида информации и за её количество. Маска ввода может находить практическое применение: маска ввода даты, маска ввода номера телефона, кода из сообщения.

Сама маска ввода может быть задана и при помощи конфигуратора, и текстом программы. 

2.    Ограничения в масках ввода в 1С

Рассмотрим, какие существуют форматы и ограничители свойств масок ввода в системе 1С.

Форматы-ограничители для поля «Маска ввода»:

·        9 – вводиться могут только цифры;

·        # — вводиться могут все цифры, пробел и знаки «+» и «-»;

·        h – вводиться могут только шестеричные цифры;

·        @ — вводиться могут буквенные символы, при этом все они будут становиться верхним регистром;

·        N – вводиться могут любые буквенные символы, регистр при этом не меняется;

·        U – аналогично «@» — можно вводить буквенные символы, и они будут преобразованы в верхний регистр;

·        I – можно вводить любые символы, но все они будут преобразованы в верхний регистр;

·        X – вводиться могут любые символы латиницы.

Чтобы запретить вводить какой-либо конкретный знак, это нужно прописать до того, как сделать маску ввода.

Символы «.», «(», «)», «-» и «,» также могут быть прописаны в маске ввода, с их помощью происходит форматирование строки. Рассмотрим примеры заданий масок ввода:

Пример №1: пусть нужно сделать маску ввода телефона, при этом, в нём должен присутствовать код города. В таком случае в системе 1С нужно написать маску ввода «9 (999) 999 99 99».

Пример №2: пусть нужно вводить в поле информацию кода накладной, вида «код.подразделение.месяц.год», в этом случае маска ввода будет выглядеть следующим образом – «UUUU.99.9999».

Замечание: при задании маски ввода её длина должна соответствовать длине строки. В случае, когда в строке может быть несколько форматов, потребуется написать несколько масок ввода — через точку с запятой.

Пример №3: пусть нужно ввести либо мобильный номер телефона, либо домашний (городской), тогда маска ввода номера будет выглядеть следующим образом – «9 (999) 999 99 99;999-99-99».

Если поместить значение из маски ввода в текст, который имеет привязку к данному полю, то значения преобразуются следующим образом: если в маске ввода символ «@», при этом в строке находится пробел, то пробел будет удалён.

Если в маске ввода есть только символы «@», то из текста все значения (которые не специальные символы) будут удалены после крайнего блока, заполненного символами «@».

Пример №4: пусть есть маска ввода следующего вида – «@@.@@.@@», а текст ввели «35. 3. .», данный текст будет преобразован в «35.3».

Чтобы прописать в маске ввода один из символов, который является специальным, необходимо перед данным символом поставить «».

В данной статье было описано, что такое маска ввода в 1С, а также описаны все критерии, параметры и форматирование масок ввода с примерами того, как они работают на практике.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Для 1с поле ввода с типом строка можно применить маску ввода. В 1с маска задает формат представления данных и ограничивает вводимой информации. Это очень удобно бывает во многих жизненных задачках, например ввод телефона, ввод специального кода или представления номера. В 1с маску можно задать как интерактивно «в режиме конфигуратора», так и программно.

Для 1с поле ввода маска доступны следующие форматы ограничители.

Ввод только числовых данных:

* 9 – вводятся только цифры

* # – вводятся цифры и знаки «+» «-» и пробел

* h ввод шестеричных цифр

Ввод цифр и букв:

* @ – ввод символов алфавита, и при этом они будут преобразованы в верхний регистр

* N – разрешен ввод алфавитных символов но уже можно контролировать регистр.

* U – вводи символов алфавита с преобразованием в верхней регистр. Отличие между U и @ не смог найти.

* ! – любой введенный символ автоматический преобразуется к верхнему регистру

* X – разрешен ввод только латиницы

Для запрет ввода символа «^» в 1с поле ввода, необходимо прописать этот символ в маску

В маске могут присутствовать специальные символы «.» , «(», «)», «-» и «,» и некоторые другие, они позволяют форматировать строку.

Например, нам нужно указать, что номер вводится с указанием кода города. То нужно прописать 1с маску ввода «9 (999) 999 99 99» или «9 (999) 999-99-99». Все зависит от требуемого формата представления строки. Или допустим нам нужно ввести формат дополнительного номера накладной типа «код подразделение.месяц.год», тогда маска будет «UUUU.99.9999» или «UUUU/99/9999»

Стоит помнить что, задавая маску – мы обязаны задать её полностью такой длины, какой длины вводится строка. Либо если существуют несколько форматов строки, короткий и длинный – то можно задать две и более масок, через запятую.

Например, вводим сотовый телефон клиента, либо городской (без указания кода города), тогда 1c маска будет 9 (999) 999-99-99;999-99-99


Купон на ОЗОН за покупку программ 1С


Из справки 1С:

ПолеВвода (TextBox) — Маска (Mask)

Использование: Чтение и запись.

Описание:

Тип: Строка. Содержит посимвольную строку маски интерактивного ввода текста в поле.

В строке маски допустимо использование следующих специальных символов:

! — любой введенный символ преобразуется в верхний регистр;

9 — допустимо ввести произвольный символ цифры;

# — допустимо ввести произвольный символ цифры или — (знак минус) или + (знак плюс) или пробел;

N — допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);

U — допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;

X (латинского алфавита) — допустимо ввести произвольный символ;

^ — не допустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;

h — допустим ввод символов обозначения шестнадцатеричных цифр;

@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.

При помещении значения из поля ввода с маской в текстовый реквизит, связанный с этим полем ввода, происходит следующее преобразование: на тех позициях, где в маске стоит символ «@», а в строке пробел – пробел удаляется. Если в маске из специальных символов используются только символы «@», то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после по-следнего непустого блока из символов «@». Например, при маске «@@.@@.@@.» текст «41. 2. .» преобразуется в «41.2».

Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ «».

Допускается указание нескольких масок в одном параметре. Маски разделяются символом «;». В этом случае использоваться будет та маска, к которой подходит введенный текст.

Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.

Информация взята с сайта http://helpf.pro

на форме есть реквизит тип ПолеВВода, длина 4. Как задать ему маску цифры и только латинские буквы?

Если маска NNNN тогда можно вводить цифры и любые буквы вне зависимости от языка раскладки клавы.

Если маска 99;ХХ тогда первые два символа цифры а третий и четвертый любые буквы латинские.

Из справки 1С:

ПолеВвода (TextBox) — Маска (Mask)

Использование: Чтение и запись.

Описание:

Тип: Строка. Содержит посимвольную строку маски интерактивного ввода текста в поле.

В строке маски допустимо использование следующих специальных символов:

! — любой введенный символ преобразуется в верхний регистр;

9 — допустимо ввести произвольный символ цифры;

# — допустимо ввести произвольный символ цифры или — (знак минус) или + (знак плюс) или пробел;

N — допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);

U — допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;

X (латинского алфавита) — допустимо ввести произвольный символ;

^ — не допустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;

h — допустим ввод символов обозначения шестнадцатеричных цифр;

@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.

При помещении значения из поля ввода с маской в текстовый реквизит, связанный с этим полем ввода, происходит следующее преобразование: на тех позициях, где в маске стоит символ «@», а в строке пробел – пробел удаляется. Если в маске из специальных символов используются только символы «@», то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после по-следнего непустого блока из символов «@». Например, при маске «@@.@@.@@.» текст «41. 2. .» преобразуется в «41.2».

Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ «».

Допускается указание нескольких масок в одном параметре. Маски разделяются символом «;». В этом случае использоваться будет та маска, к которой подходит введенный текст.

Ранее мы добавили свой дополнительный реквизит «СНИЛС» для внутреннего документа и сделали закладку с дополнительными реквизитами первой на форме.

Пришло время улучшить юзабилити нашего реквизита. Как известно СНИЛС имеет определённый формат ввода. Кроме того, он содержит контрольное число в виде двух последних цифр для проверки корректности его ввода. Учитывая это, будет хорошим тоном по отношению к пользователям, если мы поможем ему корректно указать СНИЛС для сотрудника, а в случае ошибки предупредить его об этом.

Делаем маску ввода для дополнительного реквизита

Номер СНИЛС представляет собой строку следующего формата «XXX-XXX-XXX XX», где Х это цифра от 0 до 9. Последняя группа символов XX представляет собой контрольное число. К сожалению типовой механизм не позволяет задать маску ввода для дополнительных реквизитов. Поэтому внесем изменения в программный код. Создание полей на форме для дополнительных реквизитов происходит динамически при создании формы на сервере, либо при изменении некоторых реквизитов в уже открытой форме. Первичный вызов процедуры создания дополнительных реквизитов выглядит так:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

...

УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);

...

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

Само создание полей формы происходит в процедуре

УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме()

Откроем общий модуль УправлениеСвойствами и найдем там эту процедуру. Внесем туда изменения — добавим в конце вызов своей процедуры:

Процедура ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект = Неопределено, ПоляНадписей = Ложь, СкрытьУдаленные = Неопределено) Экспорт

...

маг_РаботаСДокументами.ЗаполнитьДополнительныеРеквизитыВФорме(Форма, ОписаниеОбъекта, ПоляНадписей) ;

...

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

Теперь в общий модуль маг_РаботаСДокументами добавим  саму реализацию этой процедуры:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Процедура ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект, ПоляНадписей) Экспорт

Если ТипЗнч(Объект.Ссылка) <> Тип(«СправочникСсылка.ВнутренниеДокументы») Тогда

Возврат;

КонецЕсли;

ВидДокументаСтрокой = «»+Форма.Объект.ВидДокумента;

Если ВидДокументаСтрокой = «Заявка на прием» тогда

//Получим уникальное имя для реквизита СНИЛС

ИмяДопРеквизита = маг_ПовторноеИспользование.УникальноеИмяДопРеквизита(Объект.ВидДокумента, «СНИЛС»);

Рек = Форма.Элементы.Найти(ИмяДопРеквизита);

Если Рек <> Неопределено тогда

Рек.Маска = «999-999-999 99»;

Рек.УстановитьДействие(«ПриИзменении», «маг_СНИЛСПриИзменении»);

КонецЕсли;

КонецЕсли;

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

Здесь мы сначала получаем уникально имя для нашего реквизита. По нему мы сможем обращаться как к самому реквизиту формы, так и к полю формы. Для получения уникального имени используем следующую функцию, поместим ее в общий модуль маг_ПовторноеИспользование:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

Функция УникальноеИмяДопРеквизита(ВидДокумента, ИмяРеквизита)  Экспорт

УстановитьПривилегированныйРежим(Истина);

Набор = ВидДокумента.НаборСвойств;

Результат  = «»;

Запрос = Новый Запрос;

Запрос.Текст =

«ВЫБРАТЬ ПЕРВЫЕ 1

| ВЫБОР

| КОГДА Наборы.ПометкаУдаления

| ТОГДА &ПустойНабор

| ИНАЧЕ Наборы.Ссылка

| КОНЕЦ КАК Набор,

| Наборы.Свойство

|ИЗ

| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК Наборы

|ГДЕ

| Наборы.Ссылка = &Ссылка

| И Наборы.Свойство.Заголовок = &Наименование»;

Запрос.УстановитьПараметр(«Наименование», ИмяРеквизита);

Запрос.УстановитьПараметр(«Ссылка», Набор);

Запрос.УстановитьПараметр(«ПустойНабор», Справочники.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка());

РезультатЗапроса = Запрос.Выполнить();

Выб = РезультатЗапроса.Выбрать();

Если Выб.Следующий() тогда

ИмяУникальнаяЧасть =

СтрЗаменить(ВРег(Строка(Выб.Набор.УникальныйИдентификатор())), «-«, «x»)

+ «_»

+ СтрЗаменить(ВРег(Строка(Выб.Свойство.УникальныйИдентификатор())), «-«, «x»);

Результат = «ДополнительныйРеквизитЗначение_» + ИмяУникальнаяЧасть;

КонецЕсли;

Возврат Результат;

КонецФункции

После того как по уникальному имени получили ссылку на поле формы, устанавливаем для него маску ввода, а так же назначаем обработчик ПриИзменении для проверки корректности ввода СНИЛСа (об этом ниже). После внесения этих дополнений, значение СНИЛСа на форме должно вводиться по маске как показано на картинке ниже:

Ввод СНИЛС по маске

Маска для поля СНИЛС

Подключаем обработчик события для дополнительного реквизита

Для проверки корректности ввода СНИЛС используем типовую функцию из 1С:ЗУП. Поместим данную функцию в наш общий модуль маг_РаботаСДокументами. Ниже сама функция:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

Функция СтраховойНомерПФРСоответствуетТребованиям(СтраховойНомер) Экспорт

Результат = Истина;

СтрокаЦифр=СтрЗаменить(Лев(СтраховойНомер,11),«-«,«»);

Если ПустаяСтрока(СтрокаЦифр) Тогда

Возврат Ложь;

КонецЕсли;

Попытка

П1 = Число(СтрокаЦифр);

КонтрольноеЧисло=Число(Прав(СтраховойНомер,2));

Исключение

Возврат Ложь;

КонецПопытки;

Если Число(Лев(СтрокаЦифр,9)) > 1001998 Тогда

Всего=0;

Для Сч = 1 По 9 Цикл

Всего=Всего+Число(Сред(СтрокаЦифр,10Сч,1))*Сч

КонецЦикла;

Остаток=Всего%101;

Остаток=?(Остаток=100,0,Остаток);

Если Остаток<>КонтрольноеЧисло Тогда

Результат = Ложь;

КонецЕсли;

Иначе

Результат = Ложь;

КонецЕсли;

Возврат Результат;

КонецФункции

Помните, мы программно назначили обработчик на поле дополнительного реквизита. Теперь добавим саму процедуру для обработчика ПриИзменении в модуль формы элемента справочника «ВнтуренниеДокументы»:

&НаКлиенте

Процедура маг_СНИЛСПриИзменении(Элемент)

Если НЕ маг_РаботаСДокументами.СтраховойНомерПФРСоответствуетТребованиям(Элемент.ТекстРедактирования) тогда

ПоказатьПредупреждение(,«СНИЛС указан неверно!!!»);

КонецЕсли;

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

Теперь, если пользователь ошибется при вводе СНИЛСа, то система предупредит его и выдаст сообщение о некорректном значении:

Предупреждение о некорректном СНИЛСе

Предупреждение

Итоги

После небольших изменений в программе, поведение нашего дополнительного реквизита стало более дружелюбным к пользователю. Теперь при заполнении поля СНИЛСа легче визуально контролировать его правильность за счет маски ввода. Кроме того, даже если если пользователь ошибется при вводе, программа предупредит его об этом.

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей нашего сайта:

  • Монгольские компании в москве
  • Мондиал бизнес консорциум ооо
  • Монетка реквизиты организации
  • Монополия на большую компанию
  • Монопольные компании в россии

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии