Форматы

Формат применяется для отображения и ввода (для дат и чисел) данных в определенном виде.

При создании формата будет предложено выбрать тип создаваемого элемента.

image-1648144298202.png

  • Группа форматов – для создания папки, в которой могут быть сгруппированы несколько форматов, объединенных по какому-либо признаку. Для группы указывается только наименование.
  • Формат – для создания нового формата.

В форме формата заполняются наименование (поле ‘Имя’) и описание формата (поле ‘Формат’).

image-1648144327450.png

Для описания формата применяются специальные правила и соглашения. Рассмотрим их подробнее.

Данные могут быть отображены в одном из следующих типов формата:

  • строковый;
  • числовой;
  • текстовый для чисел;
  • для даты;
  • для времени.

При описании любого формата первым символом указывается тип формата, затем следуют параметры формата.

Строковый формат 'S'

Строковый формат применяется для отображения данных любого типа и описывается следующим образом:

'S' [Регистр] [Ширина]

  •  Регистр – задает преобразование строки к верхнему/нижнему регистру:
    • '_' (или пусто) - символы строки печатаются без изменений.
    • 'U' - все буквы приводятся к верхнему регистру.
    • 'L' - все буквы приводятся к нижнему регистру.
  • Ширина – задает количество отображаемых символов. Если ширина не указана, то данные отображаются целиком.

Числовой формат 'N'

Числовой формат применяется для отображения данных любого числового типа. Данный формат также применяется для форматирования строк. Числовой формат описывается следующим образом:

'N' [Ширина [Точка [[-]Точность] [Разделитель тысяч]]

  • Ширина – задает количество отображаемых символов.
  • Точка: первый нецифровой символ после ширины задает символ, служащий в качестве знака десятичной точки, и одновременно разделяет ширину и точность.
  • Точность: число отображаемых знаков после десятичной точки. Может принимать значение от -24 до 24. Если точность больше или равна 0, то она называется фиксированной, т.е. количество знаков в дробной части числа фиксировано. Если точность меньше 0, то она называется плавающей, то есть количество знаков в дробной части будет не более указанного числа, при этом хвостовые нули из дробной части удаляются (включая и знак десятичной точки, если дробная часть равна 0). Если точность опущена, то число форматируется с точностью -24.
  • Разделитель тысяч: по умолчанию число для удобочитаемости выводится с разделителем порядков (по 3 знака через ',' считая влево от десятичной точки [3,087,640.72]). Если указан символ '_', то число выводится без разделения целой части на тройки. Любой другой символ заменяет используемый по умолчанию разделитель.
 Текстовый формат 'A' для чисел

Текстовый формат для числе применяется для отображения данных любого числового типа и строк. Данный формат описывается следующим образом:

'A' [Регистр] [Ширина ['.' Точность] ]   

     ['|' Наименование целой части

        ['|' Наименование дробной части]]

Формат A (Alpha) позволяет выводить числа в текстовом представлении, например 'Двадцать три килограмма 975 грамм' и т.п. Если по этому формату выводятся данные строкового типа, то они интерпретируются как число. Формат позволяет производить согласование рода единицы измерения (мужской/женский/средний род) и имени числительного разряда единиц, например: 'один рубль', 'одна лира', 'одно место'. Кроме того, производится согласование числа (единственное/множественное) единицы измерения со значением разряда единиц, например: 'один рубль', 'два рубля', 'пять рублей'. Язык преобразования - русский.

Структурно формат состоит из следующих трех частей, разделенных знаками '|':

  • описание регистра, ширины и точности,
  • описание целой части,
  • описание дробной части.

Регистр – задает преобразование строки к верхнему/нижнему регистру:

    • '_' (или пусто) - символы строки печатаются без изменений.
    • 'U' - все буквы приводятся к верхнему регистру.
    • 'L' - все буквы приводятся к нижнему регистру.
  • Ширина – задает количество отображаемых символов.
  • Точность: число отображаемых знаков после десятичной точки. Может принимать значение от -24 до 24. Если точность больше или равна 0, то она называется фиксированной, т.е. количество знаков в дробной части числа фиксировано. Если точность меньше 0, то она называется плавающей, то есть количество знаков в дробной части будет не более указанного числа, при этом хвостовые нули из дробной части удаляются (включая и знак десятичной точки, если дробная часть равна 0). Если точность опущена, то число форматируется с точностью -24.

Описание целой части содержит наименование единиц измерения целой части в виде произвольной строки. Оно может состоять из нескольких слов и содержать любые символы, кроме '|'. Первый символ наименования используется для задания рода (мужской/женский/средний) единицы измерения:

  • '!' - мужской род
  • '*' - женский род
  • '?' - средний род

Если первый символ не совпадает ни с одним из указанных, то наименование выводится в мужском роде.

Для каждого слова можно задать окончания для единственного и множественного числа. Окончания задаются через знак '~'. Можно указать произвольное число окончаний, однако используются первые три. Первое окончание - окончание единственного числа, второе - множественного числа для количества 2, 3 и 4, и третье - множественного числа для количества 5 и более, а также для нулевого количества.

Примеры:

Запись 'рубл~ь~ля~ей' обуславливает получение следующих словосочетаний:

    • один рубль
    • два рубля
    • пять рублей

Запись '?рабоч~ее~их~их мест~о~а' обуславливает получение следующих словосочетаний:

    • одно рабочее место
    • два рабочих места
    • пять рабочих мест

Описание дробной части содержит точность, и - через точку - наименование единицы измерения дробной части.

Наименование единицы измерения дробной части задается по тем же правилам, что и наименование единицы измерения целой части. Дробная часть числа не преобразуется к тексту и выводится в цифровой форме, после чего через пробел выводится наименование дробной части с согласованием числа. Род наименования дробной части значения не имеет, но обрабатывается.

Если число разрядов после запятой равно 0, то дробная часть и ее наименование не печатаются. Тот же эффект достигается, если для числовых данных опустить точность или все описание дробной части. Дробная часть печатается сразу вслед за целой частью, поэтому для ее отделения от наименования единицы измерения целой части последнюю следует оканчивать пробелом.

Пример:

число 3,560,072.07004 по формату 'A40.2|рубл~ь~я~ей |*копе~йка~йки~ек'

будет представлено так: Три миллиона пятьсот шестьдесят тысяч семьдесят два рубля 07 копеек

Формат 'D' для даты и времени

Формат для даты применяется для отображения даты в строковом виде с использованием маски. Данный формат описывается следующим образом:

'D' [Регистр] [Ширина [Разделитель]] ['|' Маска]

Для вывода даты в привычном представлении используют формат D, который поддерживает 8 стандартных представлений даты, а также дает возможность указывать маску для формирования нестандартных представлений.

Маска представляет собой строку, внутри которой размещаются поля семи типов: день, месяц, год, день недели, часы, минуты, секунды. Для обозначения полей используются зарезервированные символы, остальные символы, входящие в маску, печатаются без изменений. Для задания полей используются следующие последовательности символов (все символы латинские):

  • DD - день, две цифры с ведущим 0;
  • dd - день, две цифры без ведущего 0;
  • MM - номер месяца, две цифры с ведущим 0;
  • mm - номер месяца, две цифры без ведущего 0;
  • MMM - наименование месяца по-русски, первые три буквы (Янв, Фев, ...);
  • mmm - наименование месяца по-английски, первые три буквы (Jan, Feb, ...);
  • MMMMMMMMMM - полное наименование месяца по-русски (*);
  • mmmmmmmmmm - полное наименование месяца по-английски;
  • yy, YY - год, две последние цифры;
  • yyyy, YYYY - год, четыре цифры;
  • WWW - наименование дня недели по-русски, первые три буквы (Пон, Вто ...);
  • www - наименование дня недели по-английски, первые три буквы (Mon, Tue, ...);
  • WWWWWWWWWWWW - полное наименование дня недели по-русски (*);
  • wwwwwwwwwwww - полное наименование дня недели по-английски;
  • HH – часы;
  • NN – минуты;
  • SS – секунды.

(*) для наименований допустимо задавать поля любой ширины, а не только той, которая указана выше (10 для месяца, 12 для дня недели). Если наименование не будет помещаться в указанную ширину, то оно будет усечено.

Примеры задания масок (для даты 17 апреля 2006 года):

Формат

Результат

DD/MM/YY

17/04/06

DD-MMM-YY

17-Апр-06

DD-MM-YYYY

17-04-2006

DD-MMM-YYYY

17-Апр-2006

WWWWWWWWWWWW, DD MMMMMMMMMM YYYY года

Понедельник, 17 Апреля 2006 года

mmm dd, yyyy

Apr 17, 2006

Mmmmmmmmmm dd, yyyy, wwwwwwwwwwww

April 17, 2006, Monday

  • Регистр задает преобразование строки к верхнему/нижнему регистру:
    • '_' (или пусто) - символы строки печатаются без изменений.
    • 'U' - все буквы приводятся к верхнему регистру.
    • 'L' - все буквы приводятся к нижнему регистру.
  • Ширина определяет размер поля для вывода данных и одновременно формат представления даты при отсутствии маски.

Поддерживаются 8 стандартных форматов:

    1. DD/MM/YY - ширина от 1 до 8 символов;
    2. DD-MMM-YY - ширина 9 символов;
    3. DD/MM/YYYY - ширина 10 символов;
    4. DD-MMM-YYYY - ширина от 11 до 15 символов;
    5. DD MMMMMMMMMM YYYYг. - ширина от 20 до 36 символов;
    6. WWWWWWWWWWWW, DD MMMMMMMMMM YYYY года - ширина свыше 36 символов;
    7. DD/MM/YYYY HH:NN – ширина 16 символов;
    8. DD/MM/YYYY HH:NN:SS - ширина от 17 до 19 символов.
  • Разделитель позволяет заменить символ, разделяющий поля в стандартных форматах:
    • символ '/' для форматов 1, 3, 7 и 8,
    • символ '-' для форматов 2 и 4,
    • пробел для форматов 5 и 6.

Примеры вывода даты 17 апреля 2006 года с использованием различных форматов:

Формат

Результат

'D8'

17/04/06

'D9'

17-Апр-06

'D10-'

17-04-2006

'D11'

17-Апр-2006

'D37'

Понедельник, 17 Апреля 2006 года

'D__|mmm dd, yyyy'

Apr 17, 2006

'D__|mmmmmmmmmm dd,
yyyy, wwwwwwwwwwww'

April 17, 2006, Monday

'D16'

17/04/2006 17:34

'D19'

17/04/2006 17:34:21

Формат 'H' для времени

Формат для времени применяется для отображения времени в строковом виде с использованием маски. Данный формат описывается следующим образом:

'H' [Регистр] [Ширина [Разделитель]] ['|' Маска]

Для вывода времени в привычном представлении используют формат H, который поддерживает два стандартных представления времени, а также дает возможность указывать маску для формирования нестандартных представлений.

Маска представляет собой строку, внутри которой размещаются поля трех типов: часы, минуты и секунды. Для обозначения полей используются зарезервированные символы; остальные символы, входящие в маску, печатаются без изменений. Для задания полей используются следующие последовательности символов (все символы латинские):

    • HH - число часов, две цифры с ведущим 0.
    • hh - число часов, две цифры без ведущего 0.
    • NN, nn - число минут, две цифры с ведущим 0.
    • SS, ss - число секунд, две цифры с ведущим 0.

Примеры задания масок (время 11 часов 22 минуты 45 секунд):

HH:NN                                  11:22

HH:NN:SS                             11:22:45

  • Регистр задает преобразование строки к верхнему/нижнему регистру:
    • '_' (или пусто) - символы строки печатаются без изменений.
    • 'U' - все буквы приводятся к верхнему регистру.
    • 'L' - все буквы приводятся к нижнему регистру.
  • Ширина определяет размер поля для вывода данных и одновременно формат представления даты при отсутствии маски. Поддерживаются два стандартных формата:
    • HH:NN  -  ширина от 1 до 7 символов;
    • HH:NN:SS - ширина более 7 символов.
  • Разделитель позволяет заменить символ (':'), разделяющий поля в стандартных форматах.

Примеры вывода времени 11 часов 22 минуты 45 секунд с использованием различных форматов:

Формат

Результат

'H5'

11:22

'H8-'

11-22-45

'H__|NN-SS'

22-45

'H__|Время HH часов NN минут'

Время 11 часов 22 минут

Описания форматов в проекте

В дереве проекта описание основных используемых форматов находится в базовом разделе ‘Системная область’, раздел ‘Форматы’.

Для удобства все форматы распределены по папкам.

image-1648145136665.png

Папка ‘Дата и время’ содержит форматы для даты и времени.

image-1648145153519.png

Папка ‘Строка’ содержит два строковых формата.

image-1648145173095.png

Первый формат применяется для строк указанной ширины (100 символов). При использовании второго формата ширина строки задается как параметр формата.

image-1648145197872.png

В папке ‘Числовые’ находятся форматы для отображения чисел.

image-1648145225993.png

Текстовые форматы для отображения чисел расположены в папке ‘Сумма прописью’.

image-1648145246488.png

Папка ‘Форматы вывода элементов проекта’ содержит специальные форматы, используемые при отображении дерева проекта. Для таких форматов не имеется правил описания.

Авторы проектов могут добавлять необходимые им форматы в раздел ‘Форматы’ проектных библиотек. Например:

image-1648145270506.png