Маска форматирования

Маска форматирования позволяет отображать значения полей в определенном формате.

Настройка маски

Существует два способа настройки маски:

  • Через Настройки поля на форме редактирования поля:
{ "maskOptions": { "mask": "000-000-000 00" } }
  • С помощью скриптов, в случае необходимости более гибкой настройки маски:
Schema.setFieldSettings(<Код объекта>, { <Код поля>: { maskOptions: maskOptions: { mask: "$ 0,00", blocks: { "0,00": { mask: Number, scale: 2, padFractionalZeros: true, normalizeZeros: true, radix: ",", mapToRadix: ["."], thousandsSeparator: " ", }, }, lazy: false, }, } })

Пример на тестовом стенде

Все возможности настройки можно найти по ссылке. Попробовать различные варианты масок можно в плейграунде.

Дополнительные примеры

Динамические маски

Применяется конкретная маска в зависимости от первых введенных цифр.

Schema.setFieldSettings(<Код объекта>, { <Код поля>: { maskOptions: { mask: [ { mask: '+00 {21} 0 000 0000', startsWith: '30', lazy: false, country: 'Греция' }, { mask: '+0 000 000-00-00', startsWith: '7', lazy: false, country: 'Россия' }, { mask: '+00-0000-000000', startsWith: '91', lazy: false, country: 'Индия' }, { mask: '0000000000000', startsWith: '', country: 'неизвестно' } ], dispatch: (appended, dynamicMasked) => { const number = (dynamicMasked.value + appended).replace(/\D/g, ''); return dynamicMasked.compiledMasks.find(m => number.indexOf(m.startsWith) === 0); } } } })

Маски для дат

Schema.setFieldSettings(<Код объекта>, { <Код поля>: { maskOptions: { mask: Date } } })

Маски для чисел

Schema.setFieldSettings(<Код объекта>, { <Код поля>: { maskOptions: { mask: Number, scale: 2, thousandsSeparator: ' ' } } })

Устаревшие способы настройки маски

Описанные ниже способы являются устаревшими и имеют ряд ограничений, поэтому не рекомендуется их использовать.

Через настройки поля

Перейдите в настройки поля и укажите логический тип Денежный или Число. Затем заполните поле Маска форматирования.

Пример настройки маски форматированияПример настройки маски форматирования

Примеры масок:

Маска

Число

Результат

#,##0.00

123456.789

123,456.79

###,###.

1112341.4348712

1,112,341

### ###,##

25500.12

25 500,12

##.000,00

1231

1.231,00

0000

42

0042

  • 0 — заменяется цифрой. Если цифры нет, в результате будет стоять ноль.

  • # — также заменяется цифрой. Если цифры нет, в результате на этом месте будет пусто.

Дополнительные примеры можно посмотреть здесь.

Маска для связанных полей также поддерживается. Если через связанное поле (например, FK, o2m) выводится поле из связанной таблицы, будет применяться маска форматирования, указанная для этого поля.

Через опции

Если необходимо, чтобы маска, заданная в Настройках объекта, применялась к редактируемому полю, то для этого поля нужно задать следующую конфигурацию:

"useFieldFormatMask": true

Использование маски из Настройки объектов для редактируемых полей имеет некоторые ограничения:

  • Поддерживаются только символы: 0, #, ., ,

  • Не поддерживается округление.

Примеры масок из Настройки объектов, которые поддерживаются в редактируемых полях:

Маска

Число

Результат

###

123456

123456

### ###

123456

123 456

### ###.##

123456

123 456

### ###.##

123456.78

123 456.78

### ###.00

123456

123 456.00

### ###,00

123456.78

123 456,78

###,###.##

123456.78

123,456.78

###,###.00

123456

123,456.00

Также можно задать маску форматирования для редактируемых полей с помощью конфигурации, поддерживаемой IMask. Примеры можно найти здесь.

Чтобы применить форматирование, следует задать следующую конфигурацию:

"maskOptions": { "mask": "+{7}(000)000-00-00" // Заданная маска в формате IMask }