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