Как перевести дату в строку заданного формата в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке печатных форм, отчетов и обработок разработчики 1С часто сталкиваются с задачей преобразования типа Дата в текстовое представление определенного формата — например, "01.05.2015" (без указания времени).

Рассмотрим по шагам основные способы решения этой задачи, возможные причины ошибок и полезные инструменты платформы.

Использование функции Формат() с маской даты

Основным и наиболее гибким способом преобразования даты в текстовый вид является встроенная функция Формат. Если необходимо получить дату в виде "ДД.ММ.ГГГГ", в качестве второго параметра передается форматная строка с маской ДФ.

Разберем пример кода:

ДатаСтрокой = Формат(ТвояДата, "ДФ=""дд.ММ.гггг""");

Обратим внимание на следующие важные технические нюансы:

  1. Экранирование кавычек: Если форматная строка задается в модуле в двойных кавычках, внутренние кавычки вокруг маски даты необходимо экранировать путем их удвоения (""дд.ММ.гггг""). Также допускается использование одинарных кавычек внутри внешних двойных: "ДФ='дд.ММ.гггг'".
  2. Регистр символов маски: Символы формата чувствительны к регистру. Прописные буквы ММ выводят порядковый номер месяца, тогда как строчные мм выведут минуты. Использование строчных букв ("дд.мм.гггг") приведет к некорректному выводу минут вместо месяца.

Альтернативный способ через локальный формат (ДЛФ)

Согласно стандартам разработки платформы 1С, вместо жесткого применения маски ДФ часто рекомендуется использовать параметр локального формата даты ДЛФ. Это позволяет автоматически учитывать региональные настройки сеанса пользователя.

Посмотрим на пример применения краткой даты:

ДатаСтрокой = Формат(ТвояДата, "ДЛФ=Д");

При русской локализации сеанса данный код вернет дату точно в формате "ДД.ММ.ГГГГ".

Обработка незаполненных (пустых) дат

Проанализируем ситуацию, когда исходная переменная не заполнена. В 1С значение пустой даты равно '00010101000000'. При применении маски "ДФ=дд.ММ.гггг" результат будет равен строке "01.01.0001".

Чтобы избежать вывода нулевого года и выводить пустую строку для незаполненной даты, следует добавить параметр ДП (формат пустой даты):

ДатаСтрокой = Формат(ТвояДата, "ДФ=дд.ММ.гггг; ДП=");

Использование визуального конструктора форматной строки

Чтобы не запоминать специфику синтаксиса форматных строк и избежать ошибок с кавычками, в конфигураторе 1С предусмотрен встроенный инструмент:

  1. В модуле кода нажимаем правой кнопкой мыши в месте написания или редактирования функции Формат.
  2. В контекстном меню выбираем пункт "Конструктор форматной строки".
  3. В появившемся окне выбираем тип Дата, настраиваем нужные параметры вывода и нажимаем ОК. Конструктор автоматически сформирует корректную код-строку с нужным экранированием.
← На главную