Использование маски на примере плана счетов
Одним из важнейших свойств объекта метаданных "План счетов" является Маска. Данное свойство предназначено для ограничения вводимых пользователем символов в коде элемента (т.е. в счете), а так же для задания иерархической структуры плана счетов.
Что бы ограничить ввод некоторых символов и задать формат для кода счета, необходимо составить маску из специальных символов:
Допустим, если задать для кода счета маску "##", то в план счетов можно будет вводить новые счета с кодами, которые состоят только из цифр, знаков минуса, плюса и пробела. Но, эта маска не только ограничивает использование символов, она так же устанавливает максимальный код счета, равный 99, так как можно вводить код длиною в 2 символа (если не учитывать комбинации кодов со знаками минус и плюс).
Что бы задать иерархическую структуру кодов счетов (не путать с иерархией самих счетов), то в маске необходимо использовать символ-разделитель. Разделителем может быть любой символ, не перечисленный в описании специальных символов маски. Обычно для отделения счета и субсчета используют символ "." (точка). Допустим, нам необходимо создать план счетов с двумя уровнями вложенности, для этого нужно установить длину кода равную 5 символам и задать маску "##.##" (первые два знака - счет, последние два знака - субсчет и "." - разделитель).
Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\". Так же допускается указание нескольких масок в одном параметре, для этого нужно маски разделять символом ";", в этом случае использоваться будет та маска, к которой подходит введенный текст.
Пара слов о спец. символе "@": использование этого символа в маске кода влияет на хранение кода в базе данных и отображение его в диалогах ввода.
На тех позициях, где в маске стоит символ "@", а в строке пробел – пробел удаляется, иначе говоря, при сохранении кода в базу данных код "упаковывается" - из него вырезаются пробелы. Допустим, имеется маска "@@.@@", тогда код "1Пробел.1Пробел"(5 знаков) упакуется в "1.1"(3 знака).
Если в маске из специальных символов используются только символы "@", то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после последнего непустого блока из символов "@". Например, при маске "@@.@@.@@." код "41.Пробел2.ПробелПробел."(9 знаков) преобразуется в "41.2"(4 знака).
При редактировании счета в плане счетов, код счета распаковывается до вида, подходящего под маску, а при записи опять упаковывается.
![]() |
Рисунок 1. Ввод кода для предопределенного счета |
- ! - любой введенный символ преобразуется в верхний регистр;
- 9 - допустимо ввести произвольный символ цифры;
- # - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;
- N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);
- U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;
- X (латинского алфавита) - допустимо ввести произвольный символ;
- ^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;
- h - допустим ввод символов обозначения шестнадцатеричных цифр;
- @ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.
Допустим, если задать для кода счета маску "##", то в план счетов можно будет вводить новые счета с кодами, которые состоят только из цифр, знаков минуса, плюса и пробела. Но, эта маска не только ограничивает использование символов, она так же устанавливает максимальный код счета, равный 99, так как можно вводить код длиною в 2 символа (если не учитывать комбинации кодов со знаками минус и плюс).
Что бы задать иерархическую структуру кодов счетов (не путать с иерархией самих счетов), то в маске необходимо использовать символ-разделитель. Разделителем может быть любой символ, не перечисленный в описании специальных символов маски. Обычно для отделения счета и субсчета используют символ "." (точка). Допустим, нам необходимо создать план счетов с двумя уровнями вложенности, для этого нужно установить длину кода равную 5 символам и задать маску "##.##" (первые два знака - счет, последние два знака - субсчет и "." - разделитель).
![]() |
Рисунок 2. Задание иерархии кодов счетов |
Пара слов о спец. символе "@": использование этого символа в маске кода влияет на хранение кода в базе данных и отображение его в диалогах ввода.
На тех позициях, где в маске стоит символ "@", а в строке пробел – пробел удаляется, иначе говоря, при сохранении кода в базу данных код "упаковывается" - из него вырезаются пробелы. Допустим, имеется маска "@@.@@", тогда код "1Пробел.1Пробел"(5 знаков) упакуется в "1.1"(3 знака).
Если в маске из специальных символов используются только символы "@", то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после последнего непустого блока из символов "@". Например, при маске "@@.@@.@@." код "41.Пробел2.ПробелПробел."(9 знаков) преобразуется в "41.2"(4 знака).
При редактировании счета в плане счетов, код счета распаковывается до вида, подходящего под маску, а при записи опять упаковывается.
спасибо нахуй нихуя не помогло
ОтветитьУдалить