К статье
Практический материал

Разработка и Конфигурация · 7 мин

Формат даты «месяц год» в 1С: как вывести и настроить

Как вывести дату в формате «месяц год» в 1С: функция Формат, шаблоны ДП, отчеты СКД, печатные формы и запросы. Примеры кода и типичные ошибки.

Задача показать дату в виде «месяц год» — например, «Март 2026» или «03.2026» — возникает в 1С постоянно: в отчетах по периодам, печатных формах, заголовках документов и группировках СКД. Стандартного «короткого» формата для этого нет, но встроенный язык предоставляет несколько рабочих способов, и выбор зависит от того, где именно нужен результат.

Основной инструмент — функция Формат() с параметром форматной строки. Дополнительно используются функции запроса МЕСЯЦ() и ГОД(), а в отчетах на СКД — вычисляемые поля и ресурсы. Ниже разобраны все сценарии с примерами кода.

Как работает функция Формат() с датами

Функция Формат(Значение, ФорматнаяСтрока) преобразует значение в строку по заданному шаблону. Для дат форматная строка начинается с конструкции ДФ=, после которой идет шаблон из символов-подстановок. Порядок и регистр символов определяют, какие части даты попадут в результат.

Ключевые подстановки для нашей задачи: ММ — номер месяца с ведущим нулем, МММ — краткое название месяца, ММММ — полное название, гг и гггг — год из двух или четырех цифр. В русской локали также работают латинские аналоги MM, yyyy, но надежнее использовать кириллические обозначения — они не зависят от региональных настроек сеанса.

Основные шаблоны для вывода «месяц год»

В зависимости от требуемого вида результата шаблон меняется. Все варианты ниже проверены в типовом коде и работают на управляемых и обычных формах.

Формат(ТекущаяДатаСеанса(); "ДФ='ММММ гггг'")   // "март 2026"

Формат(ТекущаяДатаСеанса(); "ДФ='ММММ гггг ""г.""'") // "март 2026 г."

Формат(ТекущаяДатаСеанса(); "ДФ='MM.yyyy'") // "03.2026"

Формат(ТекущаяДатаСеанса(); "ДФ='МММ гггг'") // "мар 2026"

Обратите внимание: название месяца выводится в именительном падеже с маленькой буквы. Если нужно «Март 2026» с заглавной, примените функцию ТРег() к результату или сформируйте строку вручную. Вставка фиксированного текста внутрь шаблона (например, «г.») выполняется через двойные кавычки, которые в строковом литерале 1С удваиваются.

1c
СтрокаПериода = ТРег(Формат(ДатаОтчета; "ДФ='ММММ гггг'"));  // "Март 2026"

Как получить месяц и год в запросе

В тексте запроса функция Формат() недоступна — там используются встроенные функции языка запросов. Для группировки по месяцам чаще всего применяют два подхода: извлечение составляющих даты или приведение к началу периода.

ВЫБРАТЬ

МЕСЯЦ(Продажи.Период) КАК Месяц,

ГОД(Продажи.Период) КАК Год,

СУММА(Продажи.СуммаОборот) КАК Сумма

ИЗ

РегистрНакопления.Продажи.Обороты КАК Продажи

СГРУППИРОВАТЬ ПО

МЕСЯЦ(Продажи.Период),

ГОД(Продажи.Период)

Альтернатива — функция НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ). Она возвращает дату первого числа месяца, что удобно для сортировки и последующего форматирования уже на клиенте или в СКД: Формат(НачалоМесяца; "ДФ='ММММ гггг'"). Такой вариант корректно сортируется по дате, в отличие от строки «март 2026», которая сортируется по алфавиту.

Вывод «месяц год» в отчете на СКД

В системе компоновки данных есть три рабочих пути. Первый — добавить в запрос поле НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) и на закладке «Настройки» задать для него условное оформление или формат через выражение представления. Второй — создать вычисляемое поле с выражением на языке выражений СКД.

Третий, самый простой способ: в настройках поля-периода на закладке «Наборы данных» или в пользовательских настройках отчета указать формат в параметре «Оформление» → «Формат» значение ДФ='ММММ гггг'. Тогда группировка останется по дате, а отображаться будет нужная строка.

Настройка формата в СКД
  1. 1
    Добавьте в запрос поле НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) КАК Месяц
  2. 2
    Включите поле в группировку строк отчета
  3. 3
    В настройках поля откройте «Оформление» и задайте Формат: ДФ='ММММ гггг'
  4. 4
    Сформируйте отчет и проверьте порядок сортировки периодов

Форматирование в печатных формах и макетах

В печатных формах дата обычно подставляется в параметр табличного документа. Достаточно при заполнении макета применить форматирование:

ОбластьШапка.Параметры.ПериодОтчета =

Формат(ДатаДокумента; "ДФ='ММММ гггг'");

Если требуется вид «март 2026 г.» по ГОСТ-стилю оформления, добавьте литерал в шаблон: "ДФ='ММММ гггг ""г.""'". Для склонения месяца в родительный падеж («марта 2026») стандартного шаблона нет — используйте функцию ПредставлениеПериода() или собственное сопоставление названий месяцев.

Функция ПредставлениеПериода(НачалоМесяца(Дата), КонецМесяца(Дата)) возвращает строку вида «Март 2026 г.» с учетом локали — часто это самый быстрый способ получить грамотное представление месяца без ручных шаблонов.
ПЗ
Практическое замечание

Типичные ошибки и ограничения

Типичные ошибки
01
Сортировка по строке «месяц год» — периоды выстраиваются по алфавиту; сортируйте по исходной дате
02
Использование ДЛФ вместо ДФ — ДЛФ применяет предопределенные представления и игнорирует произвольный шаблон
03
Ожидание склонения месяца — шаблон ММММ всегда дает именительный падеж
04
Форматирование в запросе через ВЫРАЗИТЬ — язык запросов не поддерживает Формат(), используйте МЕСЯЦ() и ГОД()
05
Пустая дата 01.01.0001 — Формат вернет пустую строку или «январь 1», проверяйте ЗначениеЗаполнено()

Отдельная ловушка — работа с пустой датой. Формат('00010101'; "ДФ='ММММ гггг'") не вызовет ошибку, но результат будет бессмысленным. Перед форматированием в отчетах и печатных формах проверяйте дату через ЗначениеЗаполнено() и выводите прочерк или пустую строку.

Контрольные точки

Как проверить результат

Вид строки в отчете
Норма

«Март 2026» или «03.2026» по всем строкам

Тревожный признак

Полная дата «01.03.2026» или пустые ячейки

Порядок периодов
Норма

Январь, февраль, март — по хронологии

Тревожный признак

Август идет перед январем (алфавитная сортировка)

Пустые даты
Норма

Прочерк или пусто

Тревожный признак

«январь 1» или «01.0001»

Какой способ выбрать

Маршрут решения

Как выбрать действие

Нужна строка в коде, сообщении или печатной формеИспользуйте Формат(Дата; "ДФ='ММММ гггг'")
Нужна группировка в запросеПримените НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) и форматируйте при выводе
Настраивается отчет на СКД без изменения кодаЗадайте формат ДФ в оформлении поля группировки
Нужно склонение или «г.» по ГОСТИспользуйте ПредставлениеПериода() или литерал в шаблоне
Итог

Что важно запомнить

Формат «месяц год» в 1С получают через Формат() с шаблоном ДФ='ММММ гггг' (или MM.yyyy для цифр). В запросах используют МЕСЯЦ(), ГОД() и НАЧАЛОПЕРИОДА(). Сортировку всегда выполняйте по исходной дате, а форматируйте только представление.

Частые вопросы

Как вывести «Март 2026» с заглавной буквы?

Оберните результат в функцию ТРег(): ТРег(Формат(Дата; "ДФ='ММММ гггг'")). Она переведет первый символ строки в верхний регистр, остальное оставит без изменений.

Можно ли получить «марта 2026» в родительном падеже?

Шаблонами формата — нет, платформа выводит только именительный падеж. Используйте ПредставлениеПериода() или собственную функцию с соответствием номеров месяцев и склоненных названий.

Почему в отчете месяцы идут не по порядку?

Группировка выполнена по строковому полю «месяц год», которое сортируется по алфавиту. Замените группировку на НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) и задайте формат отображения в оформлении поля.

Как вывести период «03.2026» в заголовке документа?

При формировании заголовка используйте Формат(ДатаДокумента; "ДФ='MM.yyyy'"). Для автоматического заголовка формы переопределите обработчик ПриСозданииНаСервере или АвтоЗаголовок.

Работает ли шаблон ДФ в тонком клиенте и на сервере?

Да, функция Формат() доступна везде. Но названия месяцев зависят от языка сеанса: при английской локали шаблон ММММ даст «March», поэтому для многоязычных решений проверяйте КодЛокализацииИнформационнойБазы().