Форматирование чисел, дат и строк
При выводе данных в печатные формы, в элементы интерфейса (надписи к элементам экранных форм и диалоговых окон) нередко возникает необходимость в приведении числовых и строковых данных к определённому формату. Форматировать результат переданного выражения в соответствии с заданной форматной строкой позволяет функция Формат()
. Англоязычный синоним имени функции — Format()
.
Переданный параметр может быть форматирован как число, строка или дата. Если тип параметра не соответствует виду форматирования, указанному в форматной строке, то будет произведено соответствующее преобразование типа.
Синтаксис функции:
Формат(<Параметр>, <ФорматнаяСтрока>)
где
- <Параметр> — выражение, значение которого будет отформатировано в соответствии с заданной форматной строкой;
- <ФорматнаяСтрока> — строковое выражение, значение которого будет определять формат возвращаемого функцией значения.
Форматная строка состоит из символа, определяющего тип данных, для которого будет производиться форматирование, и дополнительных параметров, уточняющих, как должно быть отформатировано значение, представленное первым параметром. Результатом работы функции (возвращаемым значением) является строковое значение, представляющее результаты форматирования.
Символы, определяющие тип форматируемых данных:
Ч
— число (англоязычный синоним —N
);С
— строка (англоязычный синоним —S
);Д
— дата (англоязычный синоним —D
).
Между символом, определяющим тип форматируемого значения, и дополнительными уточняющими параметрами может находиться любое число пробелов.
Форматирование числовых значений
Для числовых значений форматная строка должна иметь вид: "Чm.nDT"
или "Чm"
, где m
и n
— целые числа. Целое положительное число m
определяет длину поля в котором будет размещаться строковое представление числа, а целое положительное число n
определяет число знаков после десятичной точки. D
— представляет собой любой символ (кроме пробела и цифры), которым в сформатированной строке целая часть будет отделяться от дробной, а T
— символ (кроме пробела и цифры), которым будут разделяться триады целой части числа. Символы D
и T
являются необязательными.
Пример форматирования чисел:
Результат = Формат(1300, "Ч10.2,'"); // вернет строку " 1'300,00" Результат = Формат(1300, "Ч10"); // вернет строку " 1300"
Если в форматной строке указано «(0)» перед всеми прочими спецификациями, то все позиции в поле вывода числа, соответствующие незадействованным старшим разрядам будут заполнены символами «0», например:
Результат = Формат(1300, "Ч(0)10.2,'"); // вернет строку "001'300,00"
Если в форматной строке проставить символ «0» (ноль) перед длиной поля, то нулевые значения при выводе будут подавляться (заменяться пустой строкой), например:
Результат = Формат(0, "Ч10.2"); // вернет строку " 0.00" Результат = Формат(0, "Ч010.2"); // вернет строку " "
Если в форматной строке проставить символ «-
» (тире) перед длиной поля, то нулевые значения при выводе будут заменяться данным символом (как строковый символ он будет выровнен по левому краю), например:
Результат = Формат(0, "Ч10.2"); // вернет строку " 0.00" Результат = Формат(0, "Ч-10.2"); // вернет строку "- "
В форматной строке для числа можно использовать сдвиг разрядов при выводе. Это позволяет, например, отображать числовое значение в тысячах и т.п. (с округлением). В этом случае форматная строка должна заканчиваться символами «>Х», где Х — количество сдвигаемых разрядов. Например:
Результат = Формат(15000, "Ч010>3"); // вернет строку " 15" Результат = Формат(1500, "Ч010>3"); // вернет строку " 2"
Кроме того, возможен вывод денежных величин и просто целых чисел прописью. В этом случае форматная строка должна иметь вид "ЧПДС"
. Наличие буквы «П
» (в английском варианте — «S
») определяет сам факт вывода числа прописью. Символ «Д
» (в английском варианте — «M
») обозначает вывод денежной величины и является необязательным. Символ «С
» (в английском варианте — «H
») также необязателен и означает вывод с копейками.
Пример использования:
СуммаИтого = "Сумма: " + Формат(Сумма, "ЧПДС");
Форматирование строк
Для форматирования строк используется форматная строка: "Сn"
, где n
— положительное целое число определяющее ширину поля, в котором будет размещаться строка. Если ширина поля превосходит длину строки, отформатированная строка будет дополнена справа пробелами; если же ширина поля меньше длины строки — строка будет усечена справа.
Пример использования:
СтрДляВставки = Формат(Стр, "С25");
Форматирование дат
Для форматирования даты используется форматная строка вида "Д<ПодстрокаФормата>"
, где <ПодстрокаФормата>
представляет собой строку, определяющую вид отформатированного представления даты:
ДДММГГ
(англ.DDMMYY
) — дата в виде строки «ДД.ММ.ГГ»;ДДММГГГГ
(англ.DDMMYYYY
) — дата в виде строки «ДД.ММ.ГГГГ»;ДДММММГГГГ
(англ.DDMMMMYYYY
) — дата в виде строки «ДД месяц прописью ГГГГ»;(0)ДДММММГГГГ
(англ.(0)DDMMMMYYYY
) — то же, что и предыдущее, но в числе всегда выводится две цифры (01, 02 и т.д.);ММММГГГГ
(англ.MMMMYYYY
) — месяц прописью и год в формате ГГГГ;ММММ
(англ.MMMM
) — месяц прописью;НННН
(англ.WWWW
) — название дня недели;КККК
(англ.QQQQ
) — номер квартала;ККККГГ
(англ.QQQQYY
) — номер квартала и год в формате ГГ;ККККГГГГ
(англ.QQQQYYYY
) — номер квартала и год в формате ГГГГ;ГГГГММДД
(англ.YYYYMMDD
) — дата в виде строки «ГГГГММДД» без разделяющих точек.
Пример использования:
ДатаОтчета = Формат(РабочаяДата(), "Д ДДММММГГГГ");
Использование файлов прописей
В печатных формах бухгалтерских документов часто требуется вывод чисел, дат и денежных единиц прописью. Формируются такие тексты, как уже было сказано выше, с помощью системной функции Формат()
, а вот для правильного формирования этих текстов в системе 1С используются специальные файлы прописей. Последние представляют собой текстовые файлы с расширением .spl
и находятся в каталоге информационной базы.
Пример такого файла:
Выбор соответствующего файла прописи (в соответствии с используемой валютой) осуществляется с помощью системной процедуры Пропись()
. Англоязычный синоним имени процедуры — Spelling()
.
Синтаксис процедуры:
Пропись(<Образец>);
где <Образец> — строковое выражение, задающее имя файла прописи, или объект типа "
СписокЗначений"
, в котором в специальном формате задан образец прописей. Параметр является необязательным. Если параметр не указан или содержит пустую строку, то устанавливается образец прописей по умолчанию (данный образец содержится в файле 1cv7.spl
, который находится в каталоге \BIN
технологической платформы).
Примечание: Действие данной процедуры распространяется только на текущий программный модуль.
Пример использования процедуры:
Процедура Печать() Таб = СоздатьОбъект("Таблица"); . . . Пропись(КаталогИБ() + "1cue.spl"); // задаем имя файла прописи Таб.Опции(0, 0, 0, 0); Таб.ТолькоПросмотр(1); Таб.Показать("Печать отчета", ""); Пропись(""); // возвращаем значение прописи по умолчанию КонецПроцедуры // Печать()
Формирование строк по шаблону
Функция Шаблон()
возвращает строковое значение, сформированное в соответствии с заданным параметром, заменив в нём все встроенные выражения, заключённые в квадратные скобки, на их строковые значения. Англоязычный синоним имени функции — Template()
.
Синтаксис функции:
Шаблон(<Строка_шаблон>)
где <Строка_шаблон> — строковое выражение, содержащее шаблон формирования результирующей строки. Символы «[» и «]» (квадратные скобки) в этом выражении являются специальными символами, которые выделяют поля, содержащие встроенные выражения. Например:
Стр = Шаблон("Название услуги: [Услуга.Наименование]");
После встроенного в скобки выражения может стоять символ «#» (диез), после которого следует форматная строка, подобная той, что используется в функции Формат()
(см. описание выше). В этом случае в данное поле будет проставлен отформатированный результат выражения. Например:
Перем Часы, Минуты, Секунды; ТекущееВремя(Часы, Минуты, Секунды); Время = Шаблон("[Часы#Ч(0)2]:[Минуты#Ч(0)2]:[Секунды#Ч(0)2]");
Функция ФиксШаблон()
возвращает строковое значение, сформированное в соответствии с заданным параметром, заменив в нём все встроенные выражения, заключенные в квадратные скобки, на их значения. В отличие от функции Шаблон()
, поля замещаются значениями выражений с сохранением своей длины в символах, то есть обрезаются, если поле короче результата вычисления выражения и дополняются пробелами если длиннее. Если результат числовой, то в границах поля строка прижимается к правой границе. Англоязычный синоним имени функции — FixTemplate()
.
Пример использования функции:
НоваяСтрока = ФиксШаблон(" Имя клиента [Имя ], телефон: [Телефон ]");
Здесь также, как и в функции Шаблон()
, после встроенного в скобки выражения может стоять символ «#» (диез), после которого следует форматная строка, подобная той, что используется в функции Формат()
(см. описание выше). В этом случае в данное поле будет проставлен отформатированный результат выражения.
Другие статьи по схожей тематике