Как изменить формат даты в выражении 1С, чтобы месяц выводился прописью и без времени

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

При настройке печатных форм или шаблонов документов в режиме «1С:Предприятие» (например, в конфигурации «1С:Университет» или «1С:Зарплата и управление персоналом») пользователи часто сталкиваются с тем, что дата выводится в стандартном системном виде с указанием времени: 22.03.2021 15:52:19. Однако для официальных документов, таких как заявления или приказы, требуется более строгий формат: «22 марта 2021 г.».

В этой статье мы подробно разберем, как с помощью встроенных функций 1С преобразовать дату к нужному виду непосредственно в строке формулы, проанализируем типичные ошибки и рассмотрим несколько вариантов решения задачи.

Причина возникновения проблемы

Выясним причину, по которой система выдает дату вместе со временем. В платформе 1С тип данных Дата всегда содержит и календарное число, и время (часы, минуты, секунды). Если мы просто складываем строку с переменной даты, например: "от " + &ДатаНачала, система автоматически преобразует дату в строку по умолчанию, включая все временные метки. Чтобы этого избежать, необходимо явно указать платформе, какие части даты нам нужны и в каком представлении.

Решение 1: Использование длинного локального формата (ДЛФ)

Самый простой и эффективный способ получить дату с месяцем прописью — использовать функцию Формат() с параметром ДЛФ (Длинный Локальный Формат). Рассмотрим, как это выглядит на практике.

Если ваша формула выглядит как сложная конструкция со склонением ФИО и условиями, нам нужно найти фрагмент, отвечающий за вывод даты, и обернуть его в функцию. Проанализируем пример из обсуждения:

"Заявление от " + Формат(&ДатаНачала, "ДЛФ=DD")

В данном случае параметр DD (Long Date) дает следующие преимущества:

  1. Автоматическое название месяца: Система сама подставит «января», «февраля» и т.д. в нужном падеже.
  2. Отсутствие времени: Время будет полностью отсечено.
  3. Добавление «г.»: В зависимости от региональных настроек системы, к году автоматически добавится сокращение «г.».

Решение 2: Детальная настройка формата (ДФ)

Иногда требуется более специфичный вывод, например, без буквы «г.» в конце или с сокращенным названием месяца. В этом случае мы используем параметр ДФ (Детальный Формат). Разберем по шагам составление форматной строки:

Формат(&ДатаНачала, "ДФ='дд ММММ гггг'")

Рассмотрим значения символов внутри кавычек:

Важный нюанс: Если вы пишете эту формулу внутри другой строки кода, используйте одинарные кавычки внутри двойных, чтобы не «разрывать» выражение. Например:


Результат = "Документ составлен " + Формат(ТекущаяДата(), "ДФ='дд ММММ гггг'") + " года";

Разбор практического примера из конфигурации 1С:Университет

В специализированных решениях формулы могут быть очень длинными из-за проверок гражданства или пола. Посмотрим на итоговый вариант корректной формулы, которая объединяет ФИО и отформатированную дату:


"заявление " + ?(УниверситетСервер.ПолучитьГражданствоФизическогоЛица(&ФизическоеЛицо)<>Справочники.СтраныМира.Россия,
ПолучитьПолноеФИОФизическогоЛица(&ФизическоеЛицо, 2),
ПолучитьСокращенноеФИОФизическогоЛица(&ФизическоеЛицо,,2)) + 
" от " + Формат(&ДатаНачала, "ДЛФ=DD")

В этом выражении мы видим использование тернарного оператора ?() для выбора типа ФИО и конкатенацию (сложение) строк с результатом функции Формат(). Именно такая конструкция позволяет получить на выходе читаемый текст без лишних технических данных.

Типичные ошибки при написании формата

Проанализируем ситуации, когда формат не срабатывает:

  1. Неправильный регистр букв: В 1С коды формата чувствительны к регистру. Например, ММ — это месяц, а мм — это минуты. Если вы напишете дд мм гггг, вы получите день, минуты и год.
  2. Использование кириллицы/латиницы: Платформа понимает и dd, и дд, но лучше придерживаться одного стандарта. Ошибка ДДММММГГ (как в сообщении пользователя) часто не срабатывает, так как «ГГ» — это сокращенный год (21), а для полного (2021) нужно гггг.
  3. Отсутствие кавычек: Форматная строка — это всегда текстовый параметр, он должен быть заключен в кавычки.

Дополнительный совет: Проверка на пустую дату

При работе в режиме предприятия стоит учитывать, что дата может быть не заполнена. Если применить Формат() к пустой дате, пользователь увидит «01 января 0001 г.». Чтобы сделать вывод более профессиональным, рекомендуем использовать проверку:

?(ЗначениеЗаполнено(&ДатаНачала), Формат(&ДатаНачала, "ДЛФ=DD"), "_______")

В этом случае, если дата не указана, в документе будет выведена пустая строка для заполнения вручную, что выглядит гораздо аккуратнее.

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

← На главную