Книга: «1С:Предприятие.Элемент». Возможности встроенного языка
Назад: Число
Дальше: Методы

Форматирование

В языке «1С:Предприятия» значение типа Число можно было отформатировать с помощью функции Формат(). В форматной строке в кавычках указывались имена параметров форматирования, знак равенства и значение параметров форматирования, разделенные символом двоеточия.

Например, чтобы вывести число 9.49 с длиной целой части – 2 знака (ЧЦ=2), длиной дробной части – 1 знак (ЧДЦ=1) и округлением в большую сторону (т. е. получить 9,5), нужно написать следующую форматную строку:

Сообщить(Формат(9.49,"ЧЦ=2 ; ЧДЦ=1")); //результат: 9,5

Теперь в языке «Элемента», чтобы отформатировать число, нужно либо указать форматную строку в качестве аргумента метода Представление(), либо указать ее в выражении интерполяции после выражения, которое нужно отформатировать, через «|». А перед этим выражением указать символ «$». Например:

пер Переменная = 123.456

//1-й вариант

Сообщить(Переменная.Представление("'6.2")) //результат: «123,46»

//2-й вариант

Сообщить("${100/3|7.2}") //результат: « 33,33»

Сама форматная строка состоит из 3 частей, следующих друг за другом непрерывно (без каких-либо символов разделителей):

Вся форматная строка выделяется двойными кавычками. Префикс и суффикс указываются в отдельных одинарных кавычках. Префикс и суффикс являются необязательными частями форматной строки (могут не указываться).

Префикс – это непосредственно текст (какой-либо набор символов), который должен быть вставлен перед отформатированным числом. При использовании символа «'» (одинарная кавычка) в префиксе его необходимо экранировать: «''» (две подряд идущие одинарные кавычки). Например:

пер Переменная = 123.456

Сообщить(Переменная.Представление("'Значение='10")) //результат: «Значение= 123,456»

Сообщить(Переменная.Представление("'''руб''='7")) //результат: «'руб'=123,456»

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

Если необходимо указать несколько флагов, они указываются в форматной строке в любом порядке друг за другом без разделительных символов. Флаги могут не указываться в форматной строке. Например:

пер Переменная = 123456

Сообщить(Переменная.Представление("+_")) //результат: «+123 456»

Ширина форматной строки контролирует общую итоговую ширину вывода форматируемого числа (в данном значении не учитывается текст, идущий на префиксе и суффиксе, – он отдельно приписывается до и после строки, содержащей отформатированное число, соответственно). Ширина включает разделитель дробной и целой части.

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

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

пер Переменная = 123456

Сообщить(Переменная.Представление("10")) //результат: « 123456» (перед числом 4 пробела)

Сообщить(Переменная.Представление("1")) //результат: «123456» (перед числом нет пробелов)

Сообщить(Переменная.Представление("_")) //результат: «123 456»

Точность – это часть форматной строки, которая выводится через точку от ширины. Она задает, сколько цифр должно выводиться в дробной части числа. Если указанное количество цифр меньше, чем в исходном числе, то значение округляется (по умолчанию 1.5?2). Режим округления задается при помощи соответствующего специального флага (ОК). Если указанное количество цифр больше, дробная часть дополняется нулями с конца. Например:

пер Переменная = 12.36

Сообщить(Переменная.Представление("4.1")) //результат: «12.4»

Сообщить(Переменная.Представление("4.4")) //результат: «12.3600»

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

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

Как и обычные флаги, они могут указываться в произвольном порядке, но обязательно должны отделяться друг от друга (а также от предыдущей части форматной строки) символом «;» (точка с запятой). Имена специальных флагов можно отделять пробелом от разделителей («;») и знака равенства, а значения этих флагов – нет.

То есть подряд последовательно должны идти знак присваивания (=), значение специального флага и знак-разделитель (;).

Специальные флаги могут иметь вид:

Специальные флаги могут не указываться в форматной строке.

Например:

пер Переменная = 123.57

Сообщить(Переменная.Представление("-10.1; РД =.; ОК =ВН;")) //результат: «123.5 »

Сообщить(Переменная.Представление("-10.1; РД =.; ОК =ВВ;")) //результат: «123.6 »

Сообщить(Переменная.Представление("-10.1; РД =.;")) //результат: «123.6 »

Суффикс – это отдельная часть форматной строки, добавляемая в итоговой отформатированной строке после отформатированного числа.

При использовании символа «'» (одинарная кавычка) в суффиксе его необходимо экранировать: «''» (две подряд идущие одинарные кавычки). Например:

Сообщить(Переменная.Представление("-10.2'$'")) //результат: «123,12 $»

Сообщить(Переменная.Представление("-10.2'$'''")) //результат: «123,12 $'»

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

Существуют следующие именованные форматы:

Например:

пер Переменная = 123.525

Сообщить(Переменная.Представление("Деньги' руб'")) //результат: «123,53 руб»

Например:

пер Переменная = 0.52567

Сообщить(Переменная.Представление("Процент")) //результат: «52,57%»

Например:

пер Переменная = 10

Сообщить(Переменная.Представление("Основание16")) //результат: «а»

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

Назад: Число
Дальше: Методы