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

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

Как вывести только месяц и год в 1С

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

Задача вывести только месяц и год из даты возникает в 1С постоянно: при формировании заголовков отчётов, группировке данных по периодам, печати документов и выгрузке сведений. Полная дата вида «15.03.2026 14:32:10» для таких целей не подходит — нужен компактный вид «Март 2026» или «03.2026».

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

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

Вывод месяца и года через функцию Формат

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

Для вывода только месяца и года применяются такие варианты:

ДатаДокумента = ТекущаяДата();

// Результат: "03.2026"

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

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

Строка2 = Формат(ДатаДокумента, "ДФ='ММММ гггг'");

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

Строка3 = Формат(ДатаДокумента, "ДФ='МММ гг'");

Обратите внимание на регистр букв: «ММ» — это месяц, а «мм» — минуты. Это одна из самых частых причин неправильного результата: вместо «03.2026» разработчик получает «32.2026», потому что написал «мм.гггг» и вместо месяца подставились минуты из времени даты.

Разбор форматных символов для даты

Чтобы собрать собственный вариант представления, нужно понимать, какие символы доступны в форматной строке даты:

СимволЗначениеПример результата
МНомер месяца без ведущего нуля3
ММНомер месяца с ведущим нулём03
МММКраткое название месяцамар
ММММПолное название месяцаМарт
ггГод, две последние цифры25
ггггГод полностью2026

Разделители между элементами (точка, пробел, дефис) выбираются произвольно. Любой посторонний текст внутри форматной строки тоже допустим: например, «ДФ='за ММММ гггг г.'» даст строку «за Март 2026 г.».

Если дата содержит пустое значение (01.01.0001), функция Формат по умолчанию вернёт пустую строку. Это удобно в отчётах, но может скрыть ошибку, когда дата просто не заполнена. Для явной обработки таких случаев проверяйте значение через ЗначениеЗаполнено(Дата) до форматирования.

Извлечение месяца и года функциями Месяц и Год

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

ДатаДокумента = ТекущаяДата();

НомерМесяца = Месяц(ДатаДокумента); // 3

НомерГода = Год(ДатаДокумента); // 2026

// Сборка строки вручную при необходимости

СтрокаПериод = Формат(НомерМесяца, "ЧЦ=2; ЧВН=") + "." + Формат(НомерГода, "ЧГ=");

Такой подход оправдан, когда месяц и год нужны по отдельности: например, для проверки совпадения периода документа с отчётным периодом или для вычисления количества месяцев между двумя датами. Для простого вывода строки функция Формат короче и надёжнее.

Обратите внимание на параметр ЧГ= в примере: без него функция Формат для числа вставит разделитель групп разрядов, и год превратится в «2 025». Это вторая по частоте причина «битых» строк периода.

Типичные ошибки
01
Написали «мм» вместо «ММ» — вместо месяца выводятся минуты
02
Не указали ЧГ= при форматировании числа года — получили «2 025» с пробелом
03
Применили Формат к пустой дате и не обработали случай — в отчёте пустая колонка без объяснений
04
Сконвертировали дату в строку в запросе через ПРЕДСТАВЛЕНИЕ и попытались сортировать — порядок стал алфавитным, а не хронологическим

Месяц и год в запросах 1С

В языке запросов функции Формат нет — там работают собственные конструкции. Для извлечения частей даты используются функции МЕСЯЦ и ГОД, которые возвращают числа:

ВЫБРАТЬ

МЕСЯЦ(РеализацияТоваров.Дата) КАК Месяц,

ГОД(РеализацияТоваров.Дата) КАК Год,

СУММА(РеализацияТоваров.Сумма) КАК Сумма

ИЗ

Документ.РеализацияТоваровУслуг КАК РеализацияТоваров

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

МЕСЯЦ(РеализацияТоваров.Дата),

ГОД(РеализацияТоваров.Дата)

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

ВЫБРАТЬ

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

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

ИЗ

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

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

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

УПОРЯДОЧИТЬ ПО

МесяцПродаж

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

Оформление периода в СКД и печатных формах

В системе компоновки данных формат поля задаётся без изменения самого запроса. Откройте закладку «Наборы данных», выберите поле с датой и в колонке «Оформление» (или в свойствах поля на закладке «Настройки» → «Поля») укажите форматную строку ДФ='ММММ гггг'. Значение останется датой, а отображаться будет как месяц и год.

Это важное преимущество: сортировка и группировка продолжают работать по хронологии, потому что тип данных не менялся. Если же вы преобразуете дату в строку в самом запросе через ПРЕДСТАВЛЕНИЕ, сортировка станет алфавитной — «Август 2026» окажется раньше «Июль 2026».

В макетах печатных форм дату периода обычно форматируют при заполнении параметров области:

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.ПериодОтчета =

Формат(НачалоПериода, "ДФ='ММММ гггг'");

Какой способ выбрать в вашей ситуации

Критерий выбора простой: определите, где происходит обработка и что важнее — внешний вид или тип данных.

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

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

Нужна строка для сообщения, заголовка или печатной формы в кодеИспользуйте Формат(Дата, "ДФ='ММММ гггг'")
Нужны числа для сравнения или арифметики периодовИспользуйте функции Месяц(Дата) и Год(Дата)
Нужна группировка в запросе с сохранением сортировкиПрименяйте НАЧАЛОПЕРИОДА(Дата, МЕСЯЦ) и форматируйте при выводе
Нужно красивое отображение периода в отчёте СКДЗадайте формат ДФ='ММММ гггг' в оформлении поля, не трогая запрос

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

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

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

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

«Март 2026» или «03.2026» — соответствует исходной дате

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

«32.2026» или «00.2026» — перепутаны месяц и минуты

Сортировка строк отчёта по периоду
Норма

Январь, Февраль, Март — хронологический порядок

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

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

Год в строке
Норма

«2026» без пробелов

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

«2 025» — не задан параметр ЧГ= при форматировании числа

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

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

Учтите и ограничения: функция Формат учитывает региональные настройки сеанса, поэтому название месяца может выводиться на языке, заданном в настройках пользователя или кода локализации. Если отчёт должен выглядеть одинаково у всех пользователей, задайте код локализации явно третьим параметром форматной строки или используйте числовой формат «ММ.гггг», который от локализации не зависит.

При работе через запрос помните, что функции МЕСЯЦ и ГОД в условиях ГДЕ отключают использование индексов по полю даты и могут замедлить выборку на больших таблицах. Для отбора по периоду эффективнее сравнивать дату с границами диапазона через параметры, а не извлекать из неё части.

Итог

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

Для строки используйте Формат с ДФ='ММММ гггг', для чисел — Месяц и Год, в запросах — МЕСЯЦ, ГОД и НАЧАЛОПЕРИОДА, в СКД — формат поля. Не путайте «ММ» и «мм», не превращайте дату в строку раньше времени и проверяйте результат на контрольных датах.

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

Как вывести месяц и год в виде «03/2026» через косую черту?

Укажите нужный разделитель прямо в форматной строке: Формат(Дата, "ДФ='ММ/гггг'"). Разделитель может быть любым — точка, пробел, дефис, слэш. Специальное экранирование для этих символов не требуется.

Почему вместо месяца выводятся двузначные числа вроде 32 или 45?

Вы использовали строчные буквы «мм» в форматной строке — это символ минут, а не месяца. Замените на заглавные «ММ»: ДФ='ММ.гггг'. Проверить можно на дате с ненулевым временем: если «месяц» совпадает с минутами времени, ошибка именно в регистре.

Как получить название месяца в родительном падеже для фразы «отчёт за март 2026»?

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

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

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

Формат возвращает пустую строку, хотя дата вроде бы есть. В чём причина?

Скорее всего, дата содержит значение 01.01.0001 — это «пустая» дата в 1С, и Формат по умолчанию превращает её в пустую строку. Проверьте значение через ЗначениеЗаполнено(Дата) и обработайте случай отдельно, например выведите «период не указан».

Как вывести месяц и год на английском языке?

Передайте код локализации в форматной строке: Формат(Дата, "ДФ='MMMM yyyy'; Л=en_US"). Обратите внимание, что в английской локали форматные символы тоже локализованы — месяц обозначается буквой M, год — буквой y.