Разработка и Конфигурация · 11 мин
Как создать маску ввода в 1С
Разбираем, как создать маску ввода в 1С: свойство «Маска» поля формы, специальные символы, примеры для телефона, ИНН, даты и программная установка маски.
Маска ввода в 1С — это шаблон, который ограничивает и форматирует данные прямо во время набора текста в поле формы. С её помощью пользователь вводит телефон, ИНН, номер договора или код в строго заданном формате, а программа блокирует лишние символы ещё до сохранения. Это снижает количество ошибок в учётных данных и избавляет от необходимости вручную чистить базу от «кривых» номеров.
Механизм масок встроен в платформу 1С:Предприятие и доступен без дополнительного программирования: достаточно заполнить свойство «Маска» у поля ввода в конфигураторе. Для нестандартных ситуаций маску можно задать программно или заменить проверкой в обработчиках событий. Ниже разберём все способы, синтаксис специальных символов и типичные ошибки.
Где в 1С задаётся маска ввода
Основное место настройки — палитра свойств поля ввода в конфигураторе. Откройте форму объекта (документа, справочника или произвольную форму), выделите нужное поле и найдите свойство «Маска». Оно работает для полей со строковым типом данных, а также для числовых и дат с некоторыми ограничениями.
Второй вариант — программное назначение через встроенный язык. Это удобно, когда формат зависит от контекста: например, для российского контрагента телефон вводится с кодом +7, а для иностранного — в свободной форме. В этом случае маску устанавливают в обработчике ПриСозданииНаСервере или ПриИзменении связанного реквизита.
Синтаксис специальных символов маски
Шаблон маски состоит из управляющих символов и литералов. Управляющие символы определяют, что может ввести пользователь в конкретной позиции, а литералы (скобки, дефисы, пробелы) отображаются в поле автоматически и вводить их не нужно.
| Символ | Значение | Пример позиции |
|---|---|---|
9 | Цифра, ввод необязателен | Разряд дробной части |
# | Цифра, ввод обязателен | Цифры ИНН, телефона |
N | Буква или цифра, обязательно | Символы номера договора |
! | Любой символ в верхнем регистре | Коды с принудительным регистром |
h | Шестнадцатеричная цифра | Коды цвета, технические идентификаторы |
@ | Буква, регистр сохраняется | Буквенные позиции кодов |
U / L | Буква в верхнем / нижнем регистре | Форматированные коды |
Все прочие символы в строке маски воспринимаются как литералы и выводятся в поле как есть. Например, в шаблоне +7 (###) ###-##-## скобки, пробелы и дефисы появятся сами, а пользователь просто набирает десять цифр подряд.
Важное ограничение: маска контролирует только ручной ввод в поле. Если значение записывается программно, копируется из буфера обмена или загружается обработкой, маска не сработает. Для таких случаев нужна отдельная проверка в коде.
Как создать маску в конфигураторе пошагово
Рассмотрим настройку на примере поля «Телефон» в карточке контрагента. Порядок действий одинаков для любой управляемой формы в типовых и самописных конфигурациях.
- 1Откройте конфигуратор и найдите нужный объект (справочник, документ) в дереве конфигурации.
- 2Откройте основную форму объекта и выделите поле ввода, для которого нужна маска.
- 3В палитре свойств найдите строку «Маска» и введите шаблон, например +7 (###) ###-##-##.
- 4Сохраните конфигурацию и обновите её (или запустите в режиме отладки).
- 5Откройте форму в режиме 1С:Предприятие и проверьте ввод: лишние символы не должны набираться, разделители подставляются автоматически.
Если форма объекта не создана разработчиком, платформа генерирует её автоматически — тогда свойство «Маска» редактировать негде. В этом случае создайте форму вручную через конструктор форм или задайте маску программно в расширении конфигурации, не затрагивая типовой код.
Для полей табличных частей и динамических списков маска задаётся аналогично: выделяется колонка, и в её свойствах заполняется шаблон. Это удобно для ввода одинаковых кодов в строках документа.
Готовые примеры масок для типовых задач
Большинство практических задач закрывается небольшим набором шаблонов. Ниже — проверенные варианты, которые можно копировать и адаптировать под свою длину данных.
- Телефон РФ:
+7 (###) ###-##-##— десять обязательных цифр, код оператора в скобках. - ИНН юридического лица:
##########— ровно десять цифр. - ИНН физического лица:
############— двенадцать цифр. - Номер договора с буквами:
NNN-####— три буквы или цифры, дефис, четыре цифры. - Артикул фиксированной длины:
UU-######— две заглавные буквы и шесть цифр. - Число с необязательной дробной частью:
###99— три обязательные и две необязательные цифры.
При подборе шаблона сначала определите, какие позиции обязательны. Если длина данных плавает (например, городской номер с разным числом цифр), используйте 9 для необязательных разрядов или вообще откажитесь от маски в пользу проверки при записи — жёсткий шаблон с обязательными символами # не даст сохранить короткое значение.
Для телефонов часто делают маску с необязательными символами в конце, чтобы поддерживать добавочные номера. Но надёжнее хранить добавочный в отдельном реквизите: смешанный формат усложняет поиск дублей контрагентов.
Программная установка и изменение маски
Когда формат зависит от условий, маску назначают кодом. Свойство доступно у расширения поля формы и меняется в любой момент работы — например, при выборе страны или типа контрагента.
&НаКлиенте
Процедура СтранаПриИзменении(Элемент)
Если Объект.Страна = "Россия" Тогда
Элементы.Телефон.Маска = "+7 (###) ###-##-##";
Иначе
Элементы.Телефон.Маска = "";
КонецЕсли;
КонецПроцедурыОбратите внимание: смена маски не переформатирует уже введённое значение. Если в поле был иностранный номер, а затем включилась российская маска, старое содержимое останется до следующего редактирования. При необходимости очищайте поле или приводите значение к новому формату в том же обработчике.
Программный подход также единственный способ настроить маску в расширении конфигурации без изменения типовой формы: в обработчике ПриОткрытии формы расширения присвойте свойство нужному элементу.
Когда маска не подходит: альтернативы
Маска — инструмент жёсткой фиксации формата, и в ряде задач она создаёт больше проблем, чем решает. Понимание альтернатив помогает выбрать правильный механизм.
Как выбрать действие
Для проверки по сложным правилам (контрольная сумма ИНН, валидность email) маска принципиально не подходит — она проверяет только позиции символов. Такие проверки реализуются кодом, а маску при этом можно оставить как первый уровень защиты от случайных опечаток.
Как проверить, что маска работает правильно
После настройки обязательно протестируйте ввод в режиме 1С:Предприятие, а не только в конфигураторе. Проверка занимает минуту и отлавливает большинство ошибок шаблона.
Как проверить результат
Разделители (скобки, дефисы) подставляются автоматически
Приходится вводить разделители вручную — шаблон задан неверно
Символ блокируется, поле не принимает ввод
Буква вводится — в шаблоне стоит N или @ вместо #
Значение сохраняется без лишних символов маски или с ними осознанно
В базе хранятся «пустые» скобки и дефисы — проверьте логику записи
Вставленное значение соответствует формату
Вставляется любой текст — добавьте проверку при записи
Отдельно проверьте, что происходит при копировании документа и при загрузке данных из внешних источников. Если в базе уже есть записи со старым форматом, они не изменятся автоматически — для их приведения к новому виду потребуется сервисная обработка.
Типичные ошибки при работе с масками
Ещё одна распространённая ситуация — маска задана, но не работает. Чаще всего причина в том, что изменения внесены в конфигураторе, но конфигурация базы данных не обновлена, либо редактировалась не та форма, которая реально открывается у пользователя (например, в типовой конфигурации объект может открываться в общей форме). Проверьте, какая именно форма назначена основной у объекта.
Что важно запомнить
Маска ввода в 1С настраивается в свойстве «Маска» поля формы или программно. Используйте # для обязательных цифр, 9 для необязательных, N для букв и цифр. Маска работает только при ручном вводе — для обменов и загрузок добавляйте проверку в коде. После настройки обязательно протестируйте ввод в режиме предприятия.
Частые вопросы о масках ввода в 1С
Почему маска не срабатывает при копировании значения?
Маска контролирует только посимвольный ручной ввод. Вставка из буфера обмена, программная запись и загрузка из файлов проходят мимо неё. Чтобы защититься от некорректных данных, добавьте проверку формата в обработчике ПриЗаписи объекта или нормализуйте значение в обработчике ПриИзменении поля.
Можно ли задать маску для поля с типом «Число»?
Да, но с осторожностью: маска на числовом поле влияет на отображение и ввод разрядов, и неверно подобранная длина может обрезать значение. Если данные представляют собой код из цифр (ИНН, номер карты), правильнее хранить их в строковом реквизите — это исключает потерю ведущих нулей и ограничения по длине.
Как сделать маску необязательной для части символов?
Используйте символ 9 для необязательных цифровых позиций — пользователь сможет оставить их пустыми. Однако помните, что комбинация обязательных и необязательных позиций в одном поле иногда ведёт себя неочевидно при неполном заполнении, поэтому такие шаблоны нужно тестировать на реальных сценариях ввода.
Работает ли маска в тонком и веб-клиенте?
Механизм масок поддерживается платформой в управляемых формах независимо от клиента, однако поведение при вводе может незначительно отличаться между толстым, тонким и веб-клиентом. Если пользователи работают в разных клиентах, протестируйте маску в каждом из них, особенно шаблоны с необязательными символами.
Как изменить маску в типовой конфигурации без снятия с поддержки?
Используйте расширение конфигурации: заимствуйте форму объекта в расширение и задайте маску в обработчике ПриОткрытии программно через Элементы.ИмяПоля.Маска. Такой подход не затрагивает типовой код и сохраняет возможность автоматического обновления конфигурации.
Чем маска отличается от проверки регулярным выражением?
Маска работает в момент ввода и физически не даёт набрать недопустимый символ, но проверяет только позиции знаков. Регулярное выражение выполняется кодом после ввода и может проверять сложную логику — контрольные суммы, допустимые диапазоны, зависимости между частями значения. На практике их часто комбинируют: маска как первый барьер, регулярное выражение — как итоговая валидация.