Использование маски на примере плана счетов

Одним из важнейших свойств объекта метаданных "План счетов" является  Маска. Данное свойство предназначено для ограничения вводимых пользователем символов в коде элемента (т.е. в счете), а так же для задания иерархической структуры плана счетов.
Рисунок 1. Ввод кода для предопределенного счета
Что бы ограничить ввод некоторых символов и задать формат для кода счета, необходимо составить маску из специальных символов:
  • ! - любой введенный символ преобразуется в верхний регистр; 
  • 9 - допустимо ввести произвольный символ цифры; 
  • # - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел; 
  • N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры); 
  • U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр; 
  • X (латинского алфавита) - допустимо ввести произвольный символ; 
  • ^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка; 
  • h - допустим ввод символов обозначения шестнадцатеричных цифр; 
  • @ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.

Допустим, если задать для кода счета маску "##", то в план счетов можно будет вводить новые счета с кодами, которые состоят только из цифр, знаков  минуса, плюса и пробела. Но, эта маска не только ограничивает использование символов, она так же устанавливает максимальный код счета, равный 99, так как можно вводить код длиною в 2 символа (если не учитывать комбинации кодов со знаками минус и плюс).

Что бы задать иерархическую структуру кодов счетов (не путать с иерархией самих счетов), то в маске необходимо использовать символ-разделитель. Разделителем может быть любой символ, не перечисленный в описании специальных символов маски. Обычно для отделения счета и субсчета используют символ "." (точка). Допустим, нам необходимо создать план счетов с двумя уровнями вложенности, для этого нужно установить длину кода равную 5 символам и задать маску  "##.##" (первые два знака - счет, последние два знака - субсчет и "." - разделитель).
Рисунок 2. Задание иерархии кодов счетов
Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\". Так же допускается указание нескольких масок в одном параметре, для этого нужно маски разделять символом ";", в этом случае использоваться будет та маска, к которой подходит введенный текст.

Пара слов о спец. символе "@": использование этого символа в маске кода влияет на хранение кода в базе данных и отображение его в диалогах ввода.

На тех позициях, где в маске стоит символ "@", а в строке пробел – пробел удаляется, иначе говоря, при сохранении кода в базу данных код "упаковывается" - из него вырезаются пробелы. Допустим, имеется маска "@@.@@", тогда код "1Пробел.1Пробел"(5 знаков) упакуется в "1.1"(3 знака).

Если в маске из специальных символов используются только символы "@", то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после последнего непустого блока из символов "@". Например, при маске "@@.@@.@@." код "41.Пробел2.ПробелПробел."(9 знаков) преобразуется в "41.2"(4 знака).

При редактировании счета в плане счетов, код счета распаковывается до вида, подходящего под маску, а при записи опять упаковывается.

Комментарии

Отправить комментарий