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

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

Как в 1С получить месяц строкой: рабочие способы и примеры кода

Как в 1С получить месяц строкой: функция Формат с ДЛФ, ПредставлениеПериода, Месяц() и ПредставлениеМесяца. Примеры кода, регистры, ошибки и FAQ.

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

Главный нюанс: месяц может понадобиться в разных падежах («январь» или «января»), с годом или без, в виде числа «01» или слова. Универсальной функции «вернуть месяц словом» во встроенном языке нет, поэтому выбирают подходящую комбинацию под конкретный сценарий. Ниже разобраны все рабочие варианты с примерами кода и ограничениями.

Какие варианты результата бывают и что выбрать

Прежде чем писать код, определите, какой именно вид строки нужен. От этого зависит выбор функции и форматной строки. Типовые варианты: «январь» (только название), «Январь 2026» (месяц с годом), «12 января 2026 г.» (дата прописью), «01» (номер месяца с ведущим нулём), «2026-01» (для имён файлов и обменов).

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

Маршрут решения

Как выбрать действие

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

Функция Формат(): основные форматные строки

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

Дата = Дата(2026, 1, 12);

Строка1 = Формат(Дата, "ДФ=MMMM"); // "январь"

Строка2 = Формат(Дата, "ДФ=MMM"); // "янв"

Строка3 = Формат(Дата, "ДФ=MM"); // "01"

Строка4 = Формат(Дата, "ДФ=MMMM yyyy"); // "январь 2026"

Строка5 = Формат(Дата, "ДЛФ=DD"); // "12 января 2026 г."

Строка6 = Формат(Дата, "ДЛФ=D"); // "12.01.2026"

Обратите внимание на регистр результата: ДФ=MMMM возвращает название со строчной буквы. Если нужна заглавная («Январь»), примените ТРег() или Символ()-обработку первой буквы: ВРег(Лев(Строка,1)) + Сред(Строка,2).

1c
Формат(Дата, "ДФ=MMMM yyyy")  // январь 2026
Формат(Дата, "ДЛФ=DD")          // 12 января 2026 г.
Формат(Дата, "ДФ=MM")           // 01

ПредставлениеПериода() для месяца с годом

Если нужна строка вида «Январь 2026 г.» как заголовок отчётного периода, удобнее ПредставлениеПериода(). Передайте начало и конец месяца и флаг ФП=Истина — платформа сама распознает, что интервал равен месяцу, и выведет его название с заглавной буквы.

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

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

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

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

"ФП=Истина");

// Результат: "Январь 2026 г."

Без ФП=Истина функция вернёт диапазон «01.01.2026 - 31.01.2026», что редко нужно в интерфейсе. Учтите: КонецМесяца() возвращает время 23:59:59 — это корректно для ПредставлениеПериода, но в запросах границы периода лучше строить через НачалоМесяца(ДобавитьМесяц(Дата,1)), чтобы не потерять документы на последней секунде.

Месяц() и ручное формирование названия

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

Функция НазваниеМесяцаРодительный(НомерМесяца)

Месяцы = "января,февраля,марта,апреля,мая,июня,

|июля,августа,сентября,октября,ноября,декабря";

Возврат СтрПолучитьСтроку(СтрЗаменить(Месяцы, ",", Символы.ПС), НомерМесяца);

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

Такой подход оправдан, когда локальные форматы не дают нужного результата (например, требуется украинский или казахский вариант при русском интерфейсе) либо когда название жёстко зафиксировано требованиями к выгрузке. Минус — ручное сопровождение списка и риск опечаток.

Месяц строкой в запросах и СКД

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

Если представление нужно прямо в запросе (например, для группировки с подписью), используют ВЫБОР с двенадцатью ветками либо соединение с заранее созданной таблицей месяцев. В СКД проще: в вычисляемом поле укажите выражение Формат(Дата, "ДФ=MMMM yyyy") — оно выполняется на языке платформы и поддерживает форматные строки.

ВЫБОР

КОГДА МЕСЯЦ(Документ.Дата) = 1 ТОГДА "Январь"

КОГДА МЕСЯЦ(Документ.Дата) = 2 ТОГДА "Февраль"

...

ИНАЧЕ "Декабрь"

КОНЕЦ КАК МесяцСтрокой

Типичные ошибки и как их проверить

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

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

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

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

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

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

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

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

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

В фразе «от 12 января 2026 г.» падеж родительный

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

«от 12 январь 2026» — использован ДФ=MMMM вместо ДЛФ=DD

Регистр первой буквы
Норма

Заголовок «Январь 2026 г.»

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

«январь 2026» в заголовке — добавьте ТРег или ПредставлениеПериода

Локаль сервера
Норма

Русское название при русском интерфейсе

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

«January» на сервере — задайте Л=ru_RU

Номер месяца для файлов
Норма

«2026-01», сортировка корректна

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

«2026-1» — добавлен формат MM вместо M

Итог

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

Для одиночного названия месяца — Формат(Дата, "ДФ=MMMM"), для документов — ДЛФ=DD, для заголовка периода — ПредставлениеПериода с ФП=Истина. Всегда учитывайте падеж и локаль сервера, а в запросах строковое представление формируйте через ВЫБОР или на уровне СКД.

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

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

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

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

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

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

Представление ДЛФ зависит от региональных настроек сеанса сервера. Зафиксируйте локаль явно: Формат(Дата, "ДЛФ=DD; Л=ru_RU"). Тогда результат будет одинаковым независимо от настроек операционной системы.

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

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

Чем ДФ отличается от ДЛФ в форматной строке?

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

Как получить строку вида «2026-01» для имени файла?

Примените Формат(Дата, "ДФ=yyyy-MM"). Ведущий ноль обеспечивается двумя буквами MM. Не используйте Месяц(Дата) с конкатенацией без дополнительного форматирования — получите «2026-1», и сортировка файлов по имени нарушится.