При работе с 1С постоянно требуется выводить числа или даты в каком-либо особенном, либо просто в пристойном, виде. Для всего этого существует функция Формат(), о ней собственно и пойдет речь.
Общие сведения о функции Формат()
Если упростить, то функция Формат() позволяет превратить число, дату или булево в строку. Функция Формат() принимает два параметра:
- <Значение> — это собственно то значения, которому мы хотим придать какой-либо вид, это может быть число, дата или булево. Параметр обязательный.
- <ФорматнаяСтрока> — второй параметр, в котором и заключается весь смысл функции Формат(), об этом параметре поговорим более подробно.
Следует сказать, что форматная строка не является обязательным параметром, и в этом случаем функция Формат() отличается от функции Строка() только тем, что для значений по умолчанию для типов Число и Дата (0 и 01.01.0001 00:00:00 соответственно) функция Формат() вернет пустую строку.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(0)); // КонецПроцедуры |
В остальных же случаях форматная строка является строковым значением, которое состоит из одного или нескольких параметров форматирования, которые разделяются символом “;”.
Каждый параметр форматирования состоит из имени, знака “=” и значения параметра. При этом значение параметра можно указывать в одинарных или двойных кавычках, это в тех случаях, когда значение параметра содержит символы используемые в синтаксисе форматной строки (например знак “;”).
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(3.1234, "ЧДЦ=2; ЧРД=';'")); //3;12 КонецПроцедуры |
Внутри значения параметра можно использовать произвольные символы, которые будут отображаться как есть. Наиболее очевидный пример — разделители при формировании представления даты. Также можно использовать одинарные кавычки, если есть подозрение, что символ может быть неправильно воспринят.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат('20170327', "ДФ=гггг+ММ=дд")); //2017+03=27 КонецПроцедуры |
Параметры форматирования
Л (L) — указание языка и страны для которой будет выполняться стандартное форматирование, полный список доступен в синтаксис-помощнике.
1 2 3 4 5 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат('20170327201510', "Л=ru_RU")); //27.03.2017 20:15:10 Сообщить(Формат('20170327201510', "Л=en_US")); //3/27/2017 8:15:10 PM КонецПроцедуры |
Преобразование числа в строку
ЧЦ (ND) — максимальная длина целой части числа. Исходное число при этом округляется по правилу “Окр15как20”. Если указан этот параметр, то для отображения дробной части обязательно использовать параметр «ЧДЦ» о котором ниже.
1 2 3 4 5 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(9.49, "ЧЦ=2")); //9 Сообщить(Формат(9.51, "ЧЦ=2")); //10 КонецПроцедуры |
ЧДЦ (NFD) — максимальная длина дробной части числа. Исходное число при этом округляется по правилу “Окр15как20”.
1 2 3 4 5 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(9.49, "ЧЦ=2; ЧДЦ=1")); //9,5 Сообщить(Формат(9.51, "ЧЦ=2; ЧДЦ=1")); //9,5 КонецПроцедуры |
ЧС (NS) — указывает сдвиг разрядов: положительный — деление, отрицательный — умножение.
1 2 3 4 5 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(3210.0123, "ЧС=2")); //32,100123 Сообщить(Формат(3210.0123, "ЧС=-2")); //321001,23 КонецПроцедуры |
ЧРД (NDS) — позволяет указать каким символом разделять целую и дробную части числа.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(6543210.23, "ЧРД==")); //6543210=23 КонецПроцедуры |
ЧРГ (NGS) — позволяет указать каким символом разделять группы целой части числа. Если значением параметра будет пустая строка, то группы будут разделены неразрывным пробелом.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(6543210.23, "ЧРГ=.")); //6.543.210,23 КонецПроцедуры |
ЧН (NZ) — представление нулевого значения. Если параметр отсутствует, то нулевое значение будет представлено пустой строкой. Если параметр указан в виде “ЧН=”, то представлением нулевого значения будет “0”.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(0, "ЧН='Ничего нет'")); //Ничего нет КонецПроцедуры |
ЧВН (NLZ) — вывод лидирующих нулей. Параметр не имеет значения, само наличие “ЧВН=” уже свидетельствует о необходимости выводить лидирующие нули.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(12345, "ЧЦ=10; ЧВН=")); //0000012345 КонецПроцедуры |
ЧГ (NG) — позволяет указать способ группировки для целой части числа. В качестве значения, через запятую указываются числа. Смысл имеют только первые два числа, поэтому один из вариантов предлагаемых конструктором форматной строки выглядит странно. Все группировки отсчитываются справа налево.
![Конструктор форматной строки](https://1c-programmer-blog.ru/wp-content/uploads/2017/03/format-str-constr.png)
Всего есть несколько основных вариантов значения параметра:
- “0” — все число представляется одной группой;
- “x” — создается одна группа размером в “x” символов, остальные числа представляется одной отдельной группой;
- “x, 0” — все число делится на группы размера “x”;
- “x, y” — создается одна группа размером “x” символов, остальные числа делятся на группы размеров “y” символов.
1 2 3 4 5 6 7 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(987654321, "ЧГ=0")); //987654321 Сообщить(Формат(987654321, "ЧГ=2")); //9876543 21 Сообщить(Формат(987654321, "ЧГ=2,0")); //9 87 65 43 21 Сообщить(Формат(987654321, "ЧГ=4,2")); //9 87 65 4321 КонецПроцедуры |
ЧО (NN) — представление отрицательных чисел:
- 0 (0) — строка вида «(1,1)»;
- 1 (1) — строка вида «-1,1»;
- 2 (2) — строка вида «- 1,1»;
- 3 (3) — строка вида «1,1-«;
- 4 (4) — строка вида «1,1 -«.
1 2 3 4 5 6 7 8 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(-123, "ЧО=0")); //(123) Сообщить(Формат(-123, "ЧО=1")); //-123 Сообщить(Формат(-123, "ЧО=2")); //- 123 Сообщить(Формат(-123, "ЧО=3")); //123- Сообщить(Формат(-123, "ЧО=4")); //123 - КонецПроцедуры |
Преобразование даты в строку
ДФ (DF) — формат даты:
- д (d) — день месяца (цифрами) без лидирующего нуля;
- дд (dd) — день месяца (цифрами) с лидирующим нулем;
- ддд (ddd) — краткое название дня недели*;
- дддд (dddd) — полное название дня недели*;
- М (M) — номер месяца (цифрами) без лидирующего нуля;
- ММ (MM) — номер месяца (цифрами) с лидирующим нулем;
- МММ (MMM) — краткое название месяца*;
- ММММ (MMMM) — полное название месяца*;
- к (q) — номер квартала в году;
- г (y) — номер года без века и лидирующего нуля;
- гг (yy) — номер года без века с лидирующим нулем;
- гггг (yyyy) — номер года с веком;
- ч (h) — час в 12 часовом варианте без лидирующих нулей;
- чч (hh) — час в 12 часовом варианте с лидирующим нулем;
- Ч (H) — час в 24 часовом варианте без лидирующих нулей;
- ЧЧ (HH) — час в 24 часовом варианте с лидирующим нулем;
- м (m) — минута без лидирующего нуля;
- мм (mm) — минута с лидирующим нулем;
- с (s) — секунда без лидирующего нуля;
- сс (ss) — секунда с лидирующим нулем;
- вв (tt) — отображение половины дня AM/PM (действительно только для языков конфигурирования, поддерживающих 12 часовой вариант представления времени).
* — не используется для форматной строки поля ввода даты.
1 2 3 4 5 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат('20170327231510', "ДФ='дддд чч:мм:сс вв'")); //понедельник 11:15:10 PM Сообщить(Формат('20170327231510', "ДФ='дд ММММ гггг'")); //27 марта 2017 КонецПроцедуры |
ДЛФ (DLF) — локальный формат даты. Указывается вариант отображения частей даты:
- Д (D) — дата (цифрами);
- ДД (DD) — длинная дата (месяц прописью);
- В (T) — полное время, дата может объединяться со временем;
- ДВ (DT) — дата время.
1 2 3 4 5 6 7 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат('20170327231510', "ДЛФ=Д")); //27.03.2017 Сообщить(Формат('20170327231510', "ДЛФ=ДД")); //27 марта 2017 г. Сообщить(Формат('20170327231510', "ДЛФ=В")); //23:15:10 Сообщить(Формат('20170327231510', "ДЛФ=ДВ")); //27.03.2017 23:15:10 КонецПроцедуры |
ДП (DE) — представление пустой даты.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат('00010101', "ДП='Пустая дата'")); //Пустая дата КонецПроцедуры |
Преобразование булево в строку
БЛ (BF) — представление логического значения Ложь.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(Ложь, "БЛ='Неправда'")); //Неправда КонецПроцедуры |
БИ (BT) — представление логического значения Истина.
1 2 3 4 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат(Истина, "БИ='Правда'")); //Правда КонецПроцедуры |
Типовые задачи представления данных
Число без пробелов
1 2 3 4 | &НаКлиенте Процедура ЧислоБезПробелов(Команда) Сообщить(Формат(987654321.123, "ЧГ=0")); //987654321,123 КонецПроцедуры |
Дата без времени
1 2 3 4 5 | &НаКлиенте Процедура ДатаБезВремени(Команда) Сообщить(Формат('20170327231510', "ДЛФ=Д")); //27.03.2017 Сообщить(Формат('20170327231510', "ДФ='дд ММММ гггг'"));//27 марта 2017 КонецПроцедуры |
А также еще множество вариантов.
Месяц прописью из даты
1 2 3 4 5 | &НаКлиенте Процедура ТестФормат(Команда) Сообщить(Формат('20170227231510', "ДФ=МММ"));//февр. Сообщить(Формат('20170227231510', "ДФ=ММММ"));//Февраль КонецПроцедуры |
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.