Форматирование чисел, дат и строк
При выводе данных в печатные формы, в элементы интерфейса (надписи к элементам экранных форм и диалоговых окон) нередко возникает необходимость в приведении числовых и строковых данных к определённому формату. Форматировать результат переданного выражения в соответствии с заданной форматной строкой позволяет функция Формат(). Англоязычный синоним имени функции — 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().
Пример использования функции:
НоваяСтрока = ФиксШаблон(" Имя клиента [Имя ], телефон: [Телефон ]");
Здесь также, как и в функции Шаблон(), после встроенного в скобки выражения может стоять символ «#» (диез), после которого следует форматная строка, подобная той, что используется в функции Формат() (см. описание выше). В этом случае в данное поле будет проставлен отформатированный результат выражения.
Другие статьи по схожей тематике