Опубликовано: 17.01.2021

Форматирование данных

Форматирование чисел, дат и строк

При выводе данных в печатные формы, в элементы интерфейса (надписи к элементам экранных форм и диалоговых окон) нередко возникает необходимость в приведении числовых и строковых данных к определённому формату. Форматировать результат переданного выражения в соответствии с заданной форматной строкой позволяет функция Формат(). Англоязычный синоним имени функции — 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().

Пример использования функции:

НоваяСтрока = ФиксШаблон(" Имя клиента [Имя            ], телефон: [Телефон   ]");

Здесь также, как и в функции Шаблон(), после встроенного в скобки выражения может стоять символ «#» (диез), после которого следует форматная строка, подобная той, что используется в функции Формат() (см. описание выше). В этом случае в данное поле будет проставлен отформатированный результат выражения.

Другие статьи по схожей тематике