Функция Формат в языке 1С предоставляет широкие возможности для форматирования значений примитивных типов в нужном виде. Например, можно отформатировать дату, оставив только год и месяц, или получить форматированное число, с двумя знаками после запятой. В этой статье мы рассмотрим функцию языка 1С Формат, а также конструктор форматной строки.
Содержание
Функция Формат
Синтаксис метода Формат весьма простой – функция принимает всего два параметра – собственно значение, которое мы хотим отформатировать, и форматную строку. Форматная строка может быть набрана вручную, но гораздо удобнее использовать для этого специальный конструктор (о нем – читайте ниже).
Формат(<Значение>, <ФорматнаяСтрока>)
В качестве значения функция Формат может принимать только числа, даты и Булево. Другие типы значений передавать нельзя.
Форматная строка – это определенным образом записанное строковое значение, которое и отвечает за правила форматирования.
Важный момент, который упускают из вида начинающие разработчики. Функция Формат возвращает строку! Не важно, что мы передали в качестве параметра функции – дату, число или Булево. На выходе всегда получим строку. Поэтому неправильно использовать отформатированные значения в формулах, например, к форматированной дате прибавить сутки, или форматированное число умножить на 2.
Конструктор форматной строки
Чтобы разработчику было удобнее составлять сложные форматные строки, в платформе предусмотрен специальный конструктор. Он вызывается при редактировании модуля из контекстного меню по правой кнопке мыши – пункт так и называется “Конструктор форматной строки”. При вызове конструктора для пустой строки будет выдано сообщение:
Рассмотрим подробнее форму конструктора форматной строки:
Локальные форматы для чисел и дат будут зависеть от языка. Если установить флажок “Язык” и выбрать язык из списка, то локальный формат числа и даты будет указываться в соответствии с выбранным языком. В ином случае – будет использоваться текущий язык.
В зависимости от настроек – выбранных флажков, указанных значений – будет формироваться итоговая форматная строка. Также можно посмотреть пример, как будет отформатировано значение с этой форматной строкой. Можно ввести нужное число или дату, и посмотреть, как они будут выглядеть после форматирования.
Примеры формата даты в 1С 8.3
На примере одной и той же даты рассмотрим, как будет выглядеть значение после применения функции Формат с разными форматными строками. Дату возьмем 15.01.2022 12:34:56 с точностью до секунды.
НужнаяДата = '20220115123456';
Получить дату без времени
Сообщить(Формат(НужнаяДата, "ДФ=dd.MM.yyyy")); // 15.01.2022
Получить только время
Сообщить(Формат(НужнаяДата, "ДФ=hh:mm:ss")); // 12:34:56
Сообщить(Формат(НужнаяДата, "ДЛФ=T")); // 12:34:56
Локальный формат даты
Сообщить(Формат(НужнаяДата, "ДЛФ=DD")); // 15 января 2022 г.
Дата, где месяц прописью
Сообщить(Формат(НужнаяДата, "ДФ='dd MMMM yyyy'")); // 15 января 2022
Только месяц в именительном падеже
Сообщить(Формат(НужнаяДата, "ДФ=MMMM")); // январь
Свое представление для пустой даты
Сообщить(Формат(Дата(1,1,1), "ДП='Дата не указана!'")); // Дата не указана!
Важно! Учитывайте локализацию при использовании локальных форматов даты ДЛФ. Для разных языков представления могут отличаться. В случае, если нужно обеспечить одинаковое поведение для разных языков, следует использовать универсальный формат даты ДФ.
Примеры форматирования числа
// Всегда фиксированное число знаков после запятой
// Например - всегда два знака дробной части
Сообщить(Формат(123456, "ЧДЦ=2")); // 123 456,00
// Число без разделителей групп
// обычно это неразрывные пробелы
Сообщить(Формат(123456, "ЧГ=0")); // 123456
// Явное указание разделителя дробной части
// например, запятая вместо точки
// можно использовать один любой символ!
Сообщить(Формат(123456.78, "ЧДЦ=2; ЧРД=,")); // 123 456,78
//Так тоже будет работать!
Сообщить(Формат(123456.78, "ЧДЦ=2; ЧРД=9; ЧГ=0")); // 123456978
// Округление до целого
Сообщить(Формат(123456.78, "ЧДЦ=")); // 123 457
// вывести лидирующие нули до нужного количества знаков
Сообщить(Формат(123456.78, "ЧЦ=9; ЧВН=")); // 000 123 457
Важно! При записи форматной строки вручную, порядок указания параметров может быть произвольным, т.к. это именованные параметры, и платформа их корректно определяет, вне зависимости от того, в какой последовательности они записаны.
Например, неважно, запишем ли мы “ЧЦ=9; ЧВН=” или “ЧВН= ; ЧЦ=9″.
если открыть форматную строку конструктором, она может быть преобразована, и параметры автоматически выстроятся в определенной последовательности.
Формат значений типа Булево
При помощи функции Формат можно заменить стандартное отображение значений Истина и Ложь на произвольное.
Сообщить(Формат(Истина, "БЛ='Никак нет!'; БИ='Так точно!'")); //Так точно!
Сообщить(Формат(Ложь, "БЛ='Никак нет!'; БИ='Так точно!'")); // Никак нет!
Где еще применяется конструктор форматной строки
Помимо использования в языке 1С в функции Формат, форматная строка может применяться и в других местах, например:
- для указания формата ячеек в макете табличного документа
- в СКД в настройках оформления поля
- в СКД в параметрах редактирования поля
- в формате редактирования элемента формы
- в формате и формате редактирования колонки табличной части
и т.д.