Разработка и Конфигурация · 9 мин
Как в 1С получить месяц строкой: рабочие способы и примеры кода
Как в 1С получить месяц строкой: функция Формат с ДЛФ, ПредставлениеПериода, Месяц() и ПредставлениеМесяца. Примеры кода, регистры, ошибки и FAQ.
Задача получить месяц строкой возникает в 1С постоянно: при формировании печатных форм, выгрузках в Excel, именах файлов, заголовках отчётов и надписях на формах. При этом у разработчика есть несколько инструментов — функция Формат(), ПредставлениеПериода(), Месяц() с ручной подстановкой названия — и каждый ведёт себя по-разному в зависимости от языка, регистра и формата результата.
Главный нюанс: месяц может понадобиться в разных падежах («январь» или «января»), с годом или без, в виде числа «01» или слова. Универсальной функции «вернуть месяц словом» во встроенном языке нет, поэтому выбирают подходящую комбинацию под конкретный сценарий. Ниже разобраны все рабочие варианты с примерами кода и ограничениями.
Какие варианты результата бывают и что выбрать
Прежде чем писать код, определите, какой именно вид строки нужен. От этого зависит выбор функции и форматной строки. Типовые варианты: «январь» (только название), «Январь 2026» (месяц с годом), «12 января 2026 г.» (дата прописью), «01» (номер месяца с ведущим нулём), «2026-01» (для имён файлов и обменов).
Второй критерий — падеж. В печатных формах договоров и актов требуется родительный падеж: «от 12 января 2026 г.». Функция Формат() с длинным форматом даты выдаёт именно его, а вот ДФ=MMMM возвращает именительный падеж, что в юридических документах будет ошибкой.
Как выбрать действие
Функция Формат(): основные форматные строки
Функция Формат() — главный инструмент. Она принимает значение и форматную строку, где параметры даты задаются через ДФ (формат даты) и ДЛФ (локальный формат даты). Регистр букв важен: 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).
Формат(Дата, "ДФ=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 на компьютере разработчика и на сервере может дать разные строки. Проверяйте результат именно в той среде, где выполняется код, и при необходимости фиксируйте локаль параметром Л=.
Проверка результата и границы применения
После внедрения проверьте три контрольные точки: падеж в контексте фразы, регистр первой буквы и поведение на сервере с другой локалью. Для печатных форм дополнительно прогоните дату на границах года (январь и декабрь), чтобы убедиться, что год в представлении не теряется.
Помните об ограничении: форматные функции работают с типом Дата. Если на входе строка или число, сначала приведите значение к дате, иначе получите пустую строку без сообщения об ошибке — такие сбои трудно отлаживать.
Как проверить результат
В фразе «от 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», и сортировка файлов по имени нарушится.