Разработка и Конфигурация · 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 г."
Название месяца в запросе и СКД
В языке запросов нет прямой функции «название месяца», но есть функция МЕСЯЦ(Дата), возвращающая номер месяца числом от 1 до 12. Чтобы получить название, номер преобразуют либо в поле компоновки, либо через соединение с таблицей-шаблоном.
Наиболее практичный путь в отчетах на СКД — вычислить номер месяца в запросе, а представление задать в настройках компоновки через формат поля. Для поля типа «Дата» в ресурсах и измерениях СКД можно указать форматную строку прямо в настройках поля, и тогда название выведется без дополнительного кода.
ВЫБРАТЬ
МЕСЯЦ(Продажи.Период) КАК НомерМесяца,
НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц
ИЗ
РегистрНакопления.Продажи КАК Продажи
Если название нужно именно текстом в результате запроса (например, для выгрузки), применяют конструкцию ВЫБОР с двенадцатью ветками. Это громоздко, но работает на любом СУБД без кода на встроенном языке.
ВЫБОР КОГДА МЕСЯЦ(&Дата) = 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"), падеж зависит от контекста форматной строки, в запросах используйте МЕСЯЦ() с преобразованием, а для хранения и сортировки всегда держите дату или номер, а не текст.