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

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

Как вывести название месяца в 1С

Способы вывести название месяца в 1С: функция Формат с МесяцПрописью, представление периода, запросы. Примеры кода, склонения, ошибки и FAQ.

Задача вывести название месяца в 1С возникает постоянно: в печатных формах, заголовках отчетов, подписях к периодам и представлениях документов. Встроенный язык платформы дает несколько штатных способов решить её без ручных массивов строк — через функцию Формат(), параметры форматирования даты и представления периодов.

Главный инструмент — функция Формат() с форматной строкой ДФ, которая умеет выводить месяц словами, в нужном падеже и на нужном языке. Дополнительно существует специальный флаг МесяцПрописью и функции периодичности для запросов. Ниже разобраны все рабочие варианты с примерами кода.

Выбор способа зависит от контекста: где выполняется код (модуль объекта, запрос, СКД), какой падеж нужен (именительный или родительный) и требуется ли локализация. Ошибка в выборе приводит к типовым дефектам вроде «от 01 Январь 2026» вместо «от 01 января 2026».

Вывод названия месяца функцией Формат с параметром ДФ

Основной способ — функция Формат() с форматной строкой ДФ (дата форматированная). Спецификатор MMMM (четыре заглавные буквы M) выводит полное название месяца, а MMM — сокращенное (янв, фев и т.д.).

Дата = ТекущаяДатаСеанса();

НазваниеМесяца = Формат(Дата, "ДФ=MMMM");

// Результат: "Март" (именительный падеж)

КороткоеНазвание = Формат(Дата, "ДФ=MMM");

// Результат: "мар"

Важно понимать: ДФ=MMMM возвращает месяц в именительном падеже, потому что это «отдельно стоящее» название. Если же месяц входит в состав полной даты с числом, платформа автоматически ставит его в родительный падеж:

СтрокаДаты = Формат(Дата, "ДФ='dd MMMM yyyy'");

// Результат: "05 марта 2026" — родительный падеж

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

Флаг МесяцПрописью и длинный формат даты

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

Результат = Формат(Дата, "МесяцПрописью=Истина");

// Результат: "5 марта 2026 г." вместо "05.03.2026"

Флаг удобен, когда нужен полный формат даты «как в документах», но без ручной сборки форматной строки ДФ. Он сочетается с другими параметрами, например с ДЛФ=D (длинный формат даты):

Результат = Формат(Дата, "ДЛФ=D;МесяцПрописью=Истина");

Учтите, что МесяцПрописью не дает отдельно «голое» название месяца — он работает только внутри представления полной даты. Для изолированного названия используйте ДФ=MMMM.

Родительный падеж для фраз «за месяц» и «от даты»

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

Для фразы с числом («от 01 марта») используйте составную форматную строку — родительный падеж подставится автоматически:

Текст = "от " + Формат(ДатаДокумента, "ДФ='dd MMMM yyyy г.'");

// "от 01 марта 2026 г."

Для фразы «за март 2026» (месяц без числа) именительный падеж из ДФ=MMMM не подходит — нужен родительный. Здесь есть два рабочих подхода: использовать представление периода или сформировать дату первого числа и взять формат с «пустым» днем. Самый надежный вариант — функция ПредставлениеПериода():

Начало = НачалоМесяца(Дата);

Конец = КонецМесяца(Дата);

Текст = ПредставлениеПериода(Начало, Конец, "ФП=Истина");

// Результат: "Март 2026 г."

Типичные ошибки
01
Конструкция вида "за " + Формат(Дата, "ДФ=MMMM") дает «за Март» вместо «за март» — падеж и регистр неверны
02
Ручной массив названий месяцев в коде: ломается при смене языка и дублирует штатную функциональность
03
Использование ДФ=MM вместо ДФ=MMMM — выводится номер месяца, а не название

Название месяца в запросе и СКД

В языке запросов нет прямой функции «название месяца», но есть функция МЕСЯЦ(Дата), возвращающая номер месяца числом от 1 до 12. Чтобы получить название, номер преобразуют либо в поле компоновки, либо через соединение с таблицей-шаблоном.

Наиболее практичный путь в отчетах на СКД — вычислить номер месяца в запросе, а представление задать в настройках компоновки через формат поля. Для поля типа «Дата» в ресурсах и измерениях СКД можно указать форматную строку прямо в настройках поля, и тогда название выведется без дополнительного кода.

ВЫБРАТЬ

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

НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц

ИЗ

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

Если название нужно именно текстом в результате запроса (например, для выгрузки), применяют конструкцию ВЫБОР с двенадцатью ветками. Это громоздко, но работает на любом СУБД без кода на встроенном языке.

bsl
ВЫБОР КОГДА МЕСЯЦ(&Дата) = 1 ТОГДА "Январь" КОГДА МЕСЯЦ(&Дата) = 2 ТОГДА "Февраль" ИНАЧЕ "..." КОНЕЦ

Локализация и язык вывода

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

НазваниеEN = Формат(Дата, "Л=en_US;ДФ=MMMM");

// Результат: "March"

НазваниеRU = Формат(Дата, "Л=ru_RU;ДФ=MMMM");

// Результат: "Март"

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

Проверка результата и границы применения

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

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

Название = НРег(Формат(Дата, "ДФ=MMMM"));

// "март" — для вставки в середину предложения

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

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

Падеж названия
Норма

«за март», «от 5 марта» — согласовано с предлогом

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

«за Март», «от 5 Март» — падеж или регистр нарушен

Язык вывода
Норма

Название на языке, заданном параметром Л или локалью сеанса

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

Название на языке сервера, отличном от ожидаемого пользователем

Сортировка по месяцам
Норма

Периоды идут январь–декабрь по дате или номеру

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

Периоды отсортированы по алфавиту названий

FAQ

Как вывести название месяца в родительном падеже без числа?

Используйте ПредставлениеПериода(НачалоМесяца(Дата), КонецМесяца(Дата), "ФП=Истина") — получите «Март 2026 г.» в корректной форме. Либо сформируйте строку вручную с нужным словом, если требуется нестандартная конструкция.

Чем MMM отличается от MMMM в форматной строке?

MMM выводит сокращенное название («мар», «сен»), MMMM — полное («март», «сентябрь»). Две буквы MM дают номер месяца с ведущим нулем («03»), одна M — номер без нуля.

Можно ли получить название месяца по его номеру без даты?

Да: сформируйте дату первого числа нужного месяца функцией Дата(Год, НомерМесяца, 1) и примените Формат с ДФ=MMMM. Отдельной функции «название по номеру» в платформе нет.

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

Язык определяется параметром Л в форматной строке, а при его отсутствии — региональными настройками сеанса или сервера. Укажите язык явно: Формат(Дата, "Л=ru_RU;ДФ=MMMM").

Как вывести название месяца в макете печатной формы?

В параметр макета передайте уже отформатированную строку из кода: Параметры.Месяц = Формат(ДатаДокумента, "ДФ=MMMM"). Сам макет форматирование дат не выполняет — он выводит то, что передано.

Работает ли ДФ=MMMM в тонком и веб-клиенте?

Да, функция Формат и форматные строки работают одинаково во всех клиентах и на сервере. Различия возможны только в локали по умолчанию, поэтому язык лучше задавать явно.

Итог

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

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