Получить консультацию

Форматирование даты, числа, Булево в 1С. Функция Формат.

Функция Формат в языке 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С в функции Формат, форматная строка может применяться и в других местах, например:

  • для указания формата ячеек в макете табличного документа
  • в СКД в настройках оформления поля
  • в СКД в параметрах редактирования поля
  • в формате редактирования элемента формы
  • в формате и формате редактирования колонки табличной части

и т.д.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

два + восемь =

К НАЧАЛУ