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

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

1С: как вывести месяц строкой

Как в 1С вывести месяц строкой: функция Формат, шаблоны даты, название месяца в родительном падеже, представление периода и типичные ошибки.

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

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

Ниже разобраны рабочие приёмы: получение номера месяца, полного названия, названия в родительном падеже, сокращённого варианта, а также формирование строк вида «Январь 2026» и представления произвольного периода. Каждый приём сопровождается готовым кодом, который можно вставить в модуль и проверить.

Как работает функция Формат с датами

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

Базовый пример для текущей даты:

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

СтрокаМесяц = Формат(ТекущаяДата, "ДФ=ММММ"); // "Январь"

Сообщить(СтрокаМесяц);

Важный нюанс: вместо ТекущаяДата() в серверном коде рекомендуется ТекущаяДатаСеанса() — она учитывает часовой пояс сеанса и не зависит от настроек сервера. Для вывода месяца это особенно важно на границе месяцев: разница в часовых поясах может дать «прошлый» или «следующий» месяц.

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

Шаблоны форматной строки для месяца

Шаблон ДФ поддерживает несколько вариантов представления месяца. Выбор зависит от того, что требуется в конкретной печатной форме или файле выгрузки.

ШаблонРезультатКогда применять
ДФ=М1Номер месяца без нуля, редко нужен
ДФ=ММ01Номер с ведущим нулём: файлы обмена, имена файлов
ДФ=МММянвСокращённое название в компактных таблицах
ДФ=ММММЯнварьПолное название в именительном падеже
ДФ='ММММ ГГГГ'Январь 2026Заголовки отчётов и периодов

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

Комбинировать шаблоны можно свободно. Например, Формат(Дата, "ДФ='ММ.ГГГГ'") даст «01.2026» — типовой формат для бухгалтерских выгрузок и имен файлов отчётности.

bsl
СтрокаПериод = Формат(ДатаОтчета, "ДФ='ММММ ГГГГ'"); // "Январь 2026"
НомерМесяца = Формат(ДатаОтчета, "ДФ=ММ"); // "01"
Сокращение = Формат(ДатаОтчета, "ДФ=МММ"); // "янв"

Месяц в родительном падеже: «января»

Шаблон ММММ возвращает название в именительном падеже — «Январь». Но в датах документов требуется родительный: «15 января 2026 г.». Здесь помогает полный шаблон даты, из которого затем извлекается нужная часть.

ПолнаяДата = Формат(Документ.Дата, "ДЛФ=DD"); // "15 января 2026 г."

// либо через ДФ:

ПолнаяДата = Формат(Документ.Дата, "ДФ='дд ММММ гггг'");

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

Функция МесяцРодительныйПадеж(Дата)

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

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

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

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

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

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

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

Возврат Месяцы[Месяц(Дата) - 1];

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

Такой подход полностью независим от региональных настроек и предсказуем в любой локали. Его удобно разместить в общем модуле и вызывать из всех печатных форм.

Типичные ошибки
01
Использовать ММММ и ожидать родительный падеж — шаблон всегда возвращает именительный, в фразе «от Январь 2026» это выглядит ошибкой
02
Склеивать строку через Строка(Дата) — результат зависит от региональных настроек сеанса и у разных пользователей может отличаться
03
Путать номер месяца и его название: Месяц(Дата) возвращает число, а не строку, и в конкатенации даст «1» вместо «Январь»
04
Забывать про ведущий нуль в шаблоне ММ при формировании имён файлов — сортировка файлов «1, 10, 11, 2» ломается

Представление периода целиком

Когда нужно показать не один месяц, а диапазон — например, «Январь 2026 г. — Март 2026 г.» или «1 квартал 2026 г.», — используется функция ПредставлениеПериода(НачалоПериода, КонецПериода, ФорматнаяСтрока). Она сама определяет, как компактно описать интервал.

Начало = НачалоКвартала(ДатаОтчета);

Конец = КонецКвартала(ДатаОтчета);

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

// "1 квартал 2026 г."

Параметр ФП=Истина включает «формат периода»: платформа распознаёт квартал, полугодие, месяц и год и выводит их в привычном виде. Без него функция вернёт просто две даты через тире.

Для ровно одного месяца функция вернёт «Январь 2026 г.» — это удобно в заголовках отчётов, где период задаётся пользователем и заранее неизвестно, выбран месяц, квартал или произвольный интервал.

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

Формат(Дата, ДФ=ММММ)

Быстро и просто для одиночной даты. Ограничение: только именительный падеж и зависимость от локали

Массив названий месяцев

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

ПредставлениеПериода()

Идеально для заголовков отчётов с произвольным интервалом. Ограничение: не подходит для вывода одного слова «январь» без года

Вывод месяца в печатных формах и СКД

В макете табличного документа месяц строкой обычно подставляется через параметр. В модуле формирования печатной формы вычислите строку заранее и передайте её в область:

ОбластьШапка.Параметры.МесяцПрописью = 

Формат(Документ.Дата, "ДФ='ММММ ГГГГ'");

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

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

Порядок действий для печатной формы
  1. 1
    Определите, какое представление нужно: номер, название, название с годом или родительный падеж
  2. 2
    Выберите шаблон: ММ, МММ, ММММ или ДЛФ=DD, либо функцию с массивом названий
  3. 3
    Вычислите строку в модуле формирования печатной формы через Формат() или свою функцию
  4. 4
    Передайте строку в параметр области макета
  5. 5
    Сформируйте документ и проверьте результат на датах с разных месяцев, особенно на границе года

Проверка результата и граничные случаи

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

Второй контрольный случай — пустая дата. Формат('00010101', "ДФ=ММММ") вернёт «Январь», что в документе без даты будет выглядеть как ложное значение. Перед форматированием проверяйте заполненность:

Если ЗначениеЗаполнено(Документ.Дата) Тогда

СтрокаМесяц = Формат(Документ.Дата, "ДФ=ММММ");

Иначе

СтрокаМесяц = "";

КонецЕсли;

Третий момент — регистр первой буквы. Шаблоны возвращают название с заглавной или строчной буквы в зависимости от локали и контекста. Если в середине предложения нужна строчная буква, примените НРег(), если в начале — заглавную, используйте ВРег(Лев(Строка, 1)) + Сред(Строка, 2).

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

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

Вывод на дате 31.12 и 01.01
Норма

Месяц соответствует дате документа

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

Месяц смещён на соседний — проблема часового пояса, замените ТекущаяДата на ТекущаяДатаСеанса

Документ без даты
Норма

Строка месяца пустая

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

Выводится «Январь» — нет проверки заполненности даты

Фраза «от 15 ... 2026»
Норма

Месяц в родительном падеже

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

Именительный падеж — использован ММММ вместо ДЛФ=DD или массива

Имя файла выгрузки
Норма

Формат 01, 02 ... 12, сортировка корректна

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

Номера 1, 2 ... 12 без нуля — шаблон М вместо ММ

FAQ

Как получить номер месяца числом, а не строкой?

Используйте функцию Месяц(Дата) — она возвращает число от 1 до 12. Это удобно для сравнений и вычислений. Если затем нужен номер строкой с ведущим нулём, примените Формат(Дата, "ДФ=ММ"), а не преобразование числа.

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

Название зависит от языка сеанса и региональных настроек информационной базы. Если база работает с английской локалью, ММММ даст «January». Решения: настроить локаль сеанса, использовать параметр локализации форматной строки или формировать название через собственный массив строк.

Как вывести месяц и год в виде «Январь 2026 г.» с буквой «г»?

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

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

В языке запросов есть функция МЕСЯЦ() для номера и ПРЕДСТАВЛЕНИЕ() для строкового представления, но красивое название месяца надёжнее формировать после выборки — в вычисляемом поле СКД или при обработке результата запроса через Формат().

Как вывести квартал строкой вместо месяца?

Вычислите номер квартала: Цел((Месяц(Дата) - 1) / 3) + 1, затем сформируйте строку вида Строка(НомерКвартала) + " квартал " + Формат(Дата, "ДФ=ГГГГ"). Либо передайте границы квартала в ПредставлениеПериода() с ФП=Истина.

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

Для значения '00010101' шаблон ММММ вернёт «Январь», а ДЛФ=DD — пустую строку или дату по умолчанию в зависимости от настроек. Всегда проверяйте дату через ЗначениеЗаполнено() перед форматированием, иначе в печатной форме появится фиктивный январь.

Итог

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

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