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

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

Как получить месяц прописью в 1С

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

Вывод месяца прописью — типовая задача при разработке печатных форм, договоров и отчётов в 1С. Дата «15.03.2026» в документе должна превратиться в строку вида «март» или «15 марта 2026 г.», и делать это вручную перебором номеров месяцев не нужно: платформа предоставляет встроенные механизмы форматирования.

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

Какие способы получить месяц прописью существуют

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

Сравнение вариантов

Формат() с ДЛФ=MMMM

Универсальный способ в коде. Возвращает название месяца с учётом языка сеанса. Не подходит для падежных форм, отличных от встроенных.

МесяцПрописью=Истина

Параметр форматной строки, выводит месяц словом в составе произвольного шаблона даты. Удобен для нестандартных шаблонов.

ДЛФ=DD

Полная дата прописью вида «15 марта 2026 г.». Стандарт для договоров и печатных форм.

Представление периода в запросе/СКД

Для отчётов без написания кода. Ограничено возможностями настройки формата.

Собственная функция-перечисление

Полный контроль над падежом и регистром, но требует сопровождения и не учитывает мультиязычность автоматически.

Функция Формат с параметром ДЛФ — основной метод

Функция Формат() принимает значение и форматную строку. Для дат используется параметр ДЛФ (локальный формат даты), который задаёт шаблон представления. Чтобы получить только название месяца, достаточно указать формат MMMM.

ДатаДокумента = Дата(2026, 3, 15);

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

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

МесяцИГод = Формат(ДатаДокумента, "ДЛФ='MMMM yyyy'");

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

Обратите внимание: результат возвращается в именительном падеже и зависит от региональных настроек сеанса. Если информационная база работает с русским языком, получите «март», с английским — «March». Это удобно для мультиязычных конфигураций, но требует внимания, если шаблон предполагает строго русский вывод.

Параметр МесяцПрописью в форматной строке

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

ДатаДокумента = Дата(2026, 3, 15);

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

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

Параметр полезен, когда нужен нестандартный порядок элементов даты, отличный от предустановленных шаблонов ДЛФ. Однако в большинстве случаев проще использовать готовый формат ДЛФ=DD, который сразу даёт общепринятое представление даты прописью.

bsl
Формат(Дата(2026,3,15), "ДЛФ=DD") // "15 марта 2026 г."

Как вывести полную дату прописью для договоров и печатных форм

В договорах, актах и доверенностях дата обычно требуется в формате «15 марта 2026 г.» — с месяцем в родительном падеже. Эту задачу решает формат ДЛФ=DD без дополнительных усилий: платформа сама подставляет правильную падежную форму.

Функция ДатаПрописью(ДатаДокумента)

Возврат Формат(ДатаДокумента, "ДЛФ=DD");

КонецФункции

// Формат(Дата(2026,3,15), "ДЛФ=DD") → "15 марта 2026 г."

Если в шаблоне документа требуется убрать «г.» или изменить пунктуацию, используйте строковые функции СтрЗаменить() поверх результата либо соберите строку вручную из дня, месяца через ДЛФ=MMMM и года. Учтите, что ДЛФ=MMMM даёт именительный падеж («март»), а для конструкции «15 марта» нужен родительный — здесь ДЛФ=DD остаётся самым простым решением.

Типичные ошибки
01
Использование ДЛФ=MMMM для фразы «15 марта» — получится «15 март», что грамматически неверно. Для родительного падежа применяйте ДЛФ=DD.
02
Перебор месяцев через Если Месяц(Дата) = 1 Тогда ... — длинный код, который ломается при смене языка сеанса и дублирует встроенный механизм.
03
Забытые одинарные кавычки вокруг литерального текста в шаблоне — платформа трактует буквы как элементы формата и выдаёт неожиданный результат.
04
Хранение названия месяца в базе вместо вычисления при выводе — при смене локали данные станут некорректными.

Месяц прописью в запросах и СКД

Вывод в запросе

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

ВЫБРАТЬ

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

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

ИЗ

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

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

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

В схеме компоновки данных для поля «Месяц» на закладке «Наборы данных» или в настройках отчёта задаётся форматная строка ДЛФ='MMMM yyyy'» — тогда в отчёте период отобразится как «март 2026» без единой строки кода.

Оформление поля в СКД

Откройте схему компоновки, найдите нужное поле и в свойстве «Оформление» (или в пользовательских настройках отчёта) установите формат. Это предпочтительнее вычисляемых полей со строковой сборкой: форматирование на уровне СКД не ломает группировки и сортировку по дате.

Порядок действий для отчёта на СКД
  1. 1
    В запросе набора данных выберите дату или начало периода месяца без преобразования в строку.
  2. 2
    В схеме компоновки откройте настройки поля и задайте формат ДЛФ='MMMM yyyy'.
  3. 3
    Проверьте группировки: они должны строиться по исходной дате, а не по отформатированной строке.
  4. 4
    Сформируйте отчёт и убедитесь, что месяцы выводятся прописью и сортируются хронологически.

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

Проверка форматирования занимает минуту, но избавляет от ошибок в юридически значимых документах. Удобнее всего тестировать форматные строки в консоли кода или через «Вывести строку» в отладчике.

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

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

Падеж месяца в дате документа
Норма

«15 марта 2026 г.» — родительный падеж

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

«15 март 2026» — именительный падеж внутри даты

Сортировка в отчёте
Норма

Месяцы идут по хронологии: январь, февраль, март

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

Месяцы сортируются по алфавиту: август раньше января — значит, группировка построена по строке

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

Название месяца на языке сеанса пользователя

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

Английские названия при русском интерфейсе — проверьте региональные настройки сеанса

Сокращённый формат
Норма

MMM даёт «мар», MMMM — «март»

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

Перепутаны MMM и MMMM, в печатной форме сокращение вместо полного названия

Отдельно проверьте граничные даты: первое и последнее число месяца, високосный февраль, а также поведение при пустой дате. Формат('00010101', "ДЛФ=DD") вернёт пустую строку или нулевую дату в зависимости от контекста — в печатных формах это стоит обработать явно, чтобы не вывести некорректное значение.

Держите одну общую функцию форматирования дат в общем модуле и вызывайте её из всех печатных форм. Когда потребуется изменить стиль вывода даты во всех документах, правка займёт одну строку вместо поиска по десяткам макетов.
ПЗ
Практическое замечание

Когда нужна собственная функция с перечислением месяцев

Встроенное форматирование покрывает именительный и родительский падежи. Если требуется другой падеж («в марте», «к марту»), нестандартное сокращение или жёстко зафиксированный вывод независимо от языка сеанса, придётся написать собственную функцию.

Функция МесяцПрописьюПредложный(НомерМесяца)

Месяцы = Новый Массив;

Месяцы.Добавить("январе"); Месяцы.Добавить("феврале");

Месяцы.Добавить("марте"); Месяцы.Добавить("апреле");

Месяцы.Добавить("мае"); Месяцы.Добавить("июне");

Месяцы.Добавить("июле"); Месяцы.Добавить("августе");

Месяцы.Добавить("сентябре"); Месяцы.Добавить("октябре");

Месяцы.Добавить("ноябре"); Месяцы.Добавить("декабре");

Возврат Месяцы[НомерМесяца - 1];

КонецФункции

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

Итог

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

Название месяца — Формат(Дата, "ДЛФ=MMMM"), дата прописью для документов — Формат(Дата, "ДЛФ=DD"), в отчётах на СКД формат задаётся в настройках поля без кода. Группировки и сортировки стройте по дате, а не по строке. Собственные перечисления месяцев используйте только для нестандартных падежей.

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

Как получить месяц прописью в родительном падеже («марта»)?

Используйте формат ДЛФ=DD, который выводит дату целиком в виде «15 марта 2026 г.». Отдельно название месяца в родительном падеже встроенная функция не возвращает — при необходимости извлеките его из результата строковыми функциями или задайте собственное перечисление.

Почему Формат возвращает английское название месяца?

Результат зависит от региональных настроек сеанса и кода локализации, установленного для информационной базы или пользователя. Проверьте настройки языка в свойствах сеанса и параметр Л при необходимости явно указать локаль в форматной строке.

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

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

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

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

Что вернёт Формат для пустой даты?

Для пустой даты (01.01.0001) результат форматирования будет пустой строкой или представлением нулевой даты в зависимости от контекста. В печатных формах обрабатывайте этот случай явно через проверку ЗначениеЗаполнено(Дата), чтобы не вывести некорректное значение в документ.

Как вывести «март 2026» без числа?

Используйте составной шаблон: Формат(Дата, "ДЛФ='MMMM yyyy'"). Одинарные кавычки вокруг пробела и литералов обязательны, иначе платформа может неверно интерпретировать символы шаблона.