Разработка и Конфигурация · 7 мин
Формат даты «месяц год» в 1С: как вывести и настроить
Как вывести дату в формате «месяц год» в 1С: функция Формат, шаблоны ДП, отчеты СКД, печатные формы и запросы. Примеры кода и типичные ошибки.
Задача показать дату в виде «месяц год» — например, «Март 2026» или «03.2026» — возникает в 1С постоянно: в отчетах по периодам, печатных формах, заголовках документов и группировках СКД. Стандартного «короткого» формата для этого нет, но встроенный язык предоставляет несколько рабочих способов, и выбор зависит от того, где именно нужен результат.
Основной инструмент — функция Формат() с параметром форматной строки. Дополнительно используются функции запроса МЕСЯЦ() и ГОД(), а в отчетах на СКД — вычисляемые поля и ресурсы. Ниже разобраны все сценарии с примерами кода.
Как работает функция Формат() с датами
Функция Формат(Значение, ФорматнаяСтрока) преобразует значение в строку по заданному шаблону. Для дат форматная строка начинается с конструкции ДФ=, после которой идет шаблон из символов-подстановок. Порядок и регистр символов определяют, какие части даты попадут в результат.
Ключевые подстановки для нашей задачи: ММ — номер месяца с ведущим нулем, МММ — краткое название месяца, ММММ — полное название, гг и гггг — год из двух или четырех цифр. В русской локали также работают латинские аналоги MM, yyyy, но надежнее использовать кириллические обозначения — они не зависят от региональных настроек сеанса.
Основные шаблоны для вывода «месяц год»
В зависимости от требуемого вида результата шаблон меняется. Все варианты ниже проверены в типовом коде и работают на управляемых и обычных формах.
Формат(ТекущаяДатаСеанса(); "ДФ='ММММ гггг'") // "март 2026"
Формат(ТекущаяДатаСеанса(); "ДФ='ММММ гггг ""г.""'") // "март 2026 г."
Формат(ТекущаяДатаСеанса(); "ДФ='MM.yyyy'") // "03.2026"
Формат(ТекущаяДатаСеанса(); "ДФ='МММ гггг'") // "мар 2026"
Обратите внимание: название месяца выводится в именительном падеже с маленькой буквы. Если нужно «Март 2026» с заглавной, примените функцию ТРег() к результату или сформируйте строку вручную. Вставка фиксированного текста внутрь шаблона (например, «г.») выполняется через двойные кавычки, которые в строковом литерале 1С удваиваются.
СтрокаПериода = ТРег(Формат(ДатаОтчета; "ДФ='ММММ гггг'")); // "Март 2026"Как получить месяц и год в запросе
В тексте запроса функция Формат() недоступна — там используются встроенные функции языка запросов. Для группировки по месяцам чаще всего применяют два подхода: извлечение составляющих даты или приведение к началу периода.
ВЫБРАТЬ
МЕСЯЦ(Продажи.Период) КАК Месяц,
ГОД(Продажи.Период) КАК Год,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты КАК Продажи
СГРУППИРОВАТЬ ПО
МЕСЯЦ(Продажи.Период),
ГОД(Продажи.Период)
Альтернатива — функция НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ). Она возвращает дату первого числа месяца, что удобно для сортировки и последующего форматирования уже на клиенте или в СКД: Формат(НачалоМесяца; "ДФ='ММММ гггг'"). Такой вариант корректно сортируется по дате, в отличие от строки «март 2026», которая сортируется по алфавиту.
Вывод «месяц год» в отчете на СКД
В системе компоновки данных есть три рабочих пути. Первый — добавить в запрос поле НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) и на закладке «Настройки» задать для него условное оформление или формат через выражение представления. Второй — создать вычисляемое поле с выражением на языке выражений СКД.
Третий, самый простой способ: в настройках поля-периода на закладке «Наборы данных» или в пользовательских настройках отчета указать формат в параметре «Оформление» → «Формат» значение ДФ='ММММ гггг'. Тогда группировка останется по дате, а отображаться будет нужная строка.
- 1Добавьте в запрос поле НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) КАК Месяц
- 2Включите поле в группировку строк отчета
- 3В настройках поля откройте «Оформление» и задайте Формат: ДФ='ММММ гггг'
- 4Сформируйте отчет и проверьте порядок сортировки периодов
Форматирование в печатных формах и макетах
В печатных формах дата обычно подставляется в параметр табличного документа. Достаточно при заполнении макета применить форматирование:
ОбластьШапка.Параметры.ПериодОтчета =
Формат(ДатаДокумента; "ДФ='ММММ гггг'");
Если требуется вид «март 2026 г.» по ГОСТ-стилю оформления, добавьте литерал в шаблон: "ДФ='ММММ гггг ""г.""'". Для склонения месяца в родительный падеж («марта 2026») стандартного шаблона нет — используйте функцию ПредставлениеПериода() или собственное сопоставление названий месяцев.
Функция ПредставлениеПериода(НачалоМесяца(Дата), КонецМесяца(Дата)) возвращает строку вида «Март 2026 г.» с учетом локали — часто это самый быстрый способ получить грамотное представление месяца без ручных шаблонов.
Типичные ошибки и ограничения
Отдельная ловушка — работа с пустой датой. Формат('00010101'; "ДФ='ММММ гггг'") не вызовет ошибку, но результат будет бессмысленным. Перед форматированием в отчетах и печатных формах проверяйте дату через ЗначениеЗаполнено() и выводите прочерк или пустую строку.
Как проверить результат
«Март 2026» или «03.2026» по всем строкам
Полная дата «01.03.2026» или пустые ячейки
Январь, февраль, март — по хронологии
Август идет перед январем (алфавитная сортировка)
Прочерк или пусто
«январь 1» или «01.0001»
Какой способ выбрать
Как выбрать действие
Что важно запомнить
Формат «месяц год» в 1С получают через Формат() с шаблоном ДФ='ММММ гггг' (или MM.yyyy для цифр). В запросах используют МЕСЯЦ(), ГОД() и НАЧАЛОПЕРИОДА(). Сортировку всегда выполняйте по исходной дате, а форматируйте только представление.
Частые вопросы
Как вывести «Март 2026» с заглавной буквы?
Оберните результат в функцию ТРег(): ТРег(Формат(Дата; "ДФ='ММММ гггг'")). Она переведет первый символ строки в верхний регистр, остальное оставит без изменений.
Можно ли получить «марта 2026» в родительном падеже?
Шаблонами формата — нет, платформа выводит только именительный падеж. Используйте ПредставлениеПериода() или собственную функцию с соответствием номеров месяцев и склоненных названий.
Почему в отчете месяцы идут не по порядку?
Группировка выполнена по строковому полю «месяц год», которое сортируется по алфавиту. Замените группировку на НАЧАЛОПЕРИОДА(Период, МЕСЯЦ) и задайте формат отображения в оформлении поля.
Как вывести период «03.2026» в заголовке документа?
При формировании заголовка используйте Формат(ДатаДокумента; "ДФ='MM.yyyy'"). Для автоматического заголовка формы переопределите обработчик ПриСозданииНаСервере или АвтоЗаголовок.
Работает ли шаблон ДФ в тонком клиенте и на сервере?
Да, функция Формат() доступна везде. Но названия месяцев зависят от языка сеанса: при английской локали шаблон ММММ даст «March», поэтому для многоязычных решений проверяйте КодЛокализацииИнформационнойБазы().