Выбор месяца в 1С 8.3: календарь, период и функции
Содержание
Отдельного поля «месяц» в 1С почти нигде нет — и это сбивает с толку. Месяц в программе задают тремя разными способами: как период в отчётах, через календарь в поле даты документа или в коде через функции работы с датой. Какой нужен — зависит от того, где вы находитесь на экране.
Короче: в отчёте нажмите поле Период и выберите «Этот месяц»; в поле даты кликните по значку календаря и щёлкните по надписи месяца и года вверху; в модуле используйте НачалоМесяца() и КонецМесяца(). Ниже — каждый случай подробно, с точными путями и кодом, который решает задачу целиком.
Период вверху отчёта и выберите «Этот месяц» или «Прошлый месяц» в списке стандартных периодов. Границы дат программа подставит сама.НачалоМесяца(Дата) и КонецМесяца(Дата) — они вернут первую и последнюю секунду месяца по любой переданной дате.Календарь в поле даты: как перескочить на нужный месяц
Самый частый случай — поле даты в документе (Дата, Период начисления, Дата оплаты). Справа у такого поля есть значок календаря.
- Нажмите значок календаря — раскроется месячная сетка с днями.
- Вверху календаря — стрелки
‹и›и надпись с названием месяца и годом (например, «январь 2026»). - Стрелки листают по одному месяцу назад и вперёд. Это удобно, когда нужен соседний месяц.
- Чтобы прыгнуть далеко, нажмите на саму надпись месяца и года. Календарь переключится в режим выбора месяца — 12 плиток на год.
- Нажмите ещё раз по надписи года — откроется выбор года (сетка лет). Выбрали год → месяц → день.
Этот приём с кликом по заголовку экономит время: вместо того чтобы тыкать стрелкой двадцать раз, вы за два клика попадаете в любой месяц любого года.
Выбор дня внутри месяца фиксирует значение в поле. Если по теме достаточно самого месяца (например, вы указываете месяц начисления), ставьте любой день — обычно первое число.
Как ввести месяц с клавиатуры без мыши
Мышь для даты не обязательна. Поле даты в 1С принимает цифры подряд и само расставляет разделители.
- Встаньте в поле даты, наберите
01012026— программа покажет01.01.2026. Точки печатать не нужно. - Можно вводить коротко: часто достаточно дня и месяца, год подставится текущий.
- После ввода нажмите
EnterилиTab— значение зафиксируется.
Когда календарь уже открыт, перемещаться по дням можно стрелками клавиатуры, а выбрать выделенный день — клавишей Enter. Это быстрее, чем целиться мышью в мелкую плитку.
Для полей периода в отчётах клавиатурный ввод тоже работает: открыли диалог выбора периода, перешли на вкладку произвольного периода и вписали даты начала и конца руками. Если нужен не весь месяц, а, скажем, первая декада, это самый короткий путь — вписать 01 и 10 числа вместо листания календаря.
Проверяйте год. Самая частая опечатка — не тот год при быстром наборе: набрали 0101 без года, а база подставила не тот, что нужен. Перед проведением документа взгляните на полную дату.
Выбор месяца периодом в отчётах
В отчётах (оборотно-сальдовая ведомость, анализ счёта, карточка счёта) месяц задают не датой, а периодом. Вверху формы отчёта есть поле Период.
- Нажмите поле
Период(или кнопку выбора рядом с ним). - Откроется список стандартных периодов: «Сегодня», «Эта неделя», «Этот месяц», «Этот квартал», «Этот год», «Вчера», «Прошлый месяц» и так далее.
- Выберите «Этот месяц» или «Прошлый месяц» — программа сама проставит первое и последнее число месяца.
- Нужен конкретный месяц прошлого года? Выберите «Произвольный период» и задайте даты начала и конца вручную через календарь.
Такой периодический выбор удобнее даты: не нужно помнить, сколько дней в феврале, — границы месяца программа считает сама.
Диалог выбора периода обычно состоит из двух частей. Слева или на первой вкладке — список готовых вариантов («Этот месяц», «Прошлый месяц», «Этот квартал» и так далее). На вкладке произвольного периода — два поля с календарями: дата начала и дата конца. Выбор месяца через готовый вариант проставит обе границы разом; через произвольный период вы задаёте их сами. Для месяца прошлого или будущего года нужен именно произвольный период: относительные варианты считают месяцы от сегодняшней даты.
Если отчёт строится по дням, а вам нужен свод за месяц, проверьте группировку в настройках отчёта (Показать настройки → Группировка). Период задаёт только диапазон, а детализацию строк — именно группировка.
Кнопки «Этот месяц» и «Прошлый месяц» в списке — это и есть «быстрые способы» выбора: один клик вместо ручного ввода двух дат.
Месяц в закрытии месяца и зарплатных документах
В типовых конфигурациях есть места, где месяц — ключевой параметр, а не просто дата.
1С:Бухгалтерия 3.0, закрытие месяца
. Путь: Операции → Закрытие периода → Закрытие месяца. Вверху формы — поле месяца со стрелками влево-вправо. Стрелки листают по месяцам; название месяца и год видны сразу. Выбрали месяц — программа показывает список регламентных операций именно за него: начисление амортизации, расчёт себестоимости, закрытие счетов. Операции привязаны к выбранному месяцу, поэтому закрывать периоды нужно по порядку: сначала январь, потом февраль и так далее. Если перескочить через месяц, программа предупредит, что предыдущий период не закрыт.
1С:ЗУП 3.1, начисление зарплаты. В документах начисления (например, «Начисление зарплаты и взносов») есть поле Месяц. Оно определяет период, за который считается зарплата
, и влияет на отчётность. Здесь месяц выбирают именно в этом поле, а не в поле даты документа — дата документа и месяц начисления это разные вещи.
В зарплатных документах не путайте Месяц (период начисления) с Дата (дата создания документа). Поставите не тот месяц — начисления уйдут в чужой период, и в отчётах по НДФЛ и взносам появятся расхождения.
Таблица — где искать поле месяца в разных типовых конфигурациях:
| Задача | Где выбирается месяц |
|---|---|
| Закрытие месяца (БП 3.0) | Операции → Закрытие периода → Закрытие месяца, поле со стрелками вверху |
| Начисление зарплаты (ЗУП 3.1) | Поле Месяц в шапке документа начисления |
| Отчёт (ОСВ, анализ счёта) | Поле Период → «Этот месяц» / «Прошлый месяц» |
| Произвольный документ | Поле Дата → календарь или ввод с клавиатуры |
Как задать месяц программно: функции для разработчика
Если вы дорабатываете конфигурацию, месяц в коде получают не вручную, а через встроенные функции работы с датой. Они понимают разную длину месяцев и переход через год.
// Границы текущего месяца
НачалоТекущего = НачалоМесяца(ТекущаяДатаСеанса());
КонецТекущего = КонецМесяца(ТекущаяДатаСеанса());
// Предыдущий и следующий месяц от произвольной даты
НачалоПрошлого = НачалоМесяца(ДобавитьМесяц(Дата, -1));
НачалоСледующего = НачалоМесяца(ДобавитьМесяц(Дата, 1));
// Номер месяца (1..12) и его название
НомерМесяца = Месяц(Дата); // например, 1
НазваниеМесяца = Формат(Дата, "ДФ='MMMM'"); // например, «январь»
Что здесь важно:
НачалоМесяца(Дата)возвращает первую секунду месяца (01.ММ.ГГГГ 00:00:00),КонецМесяца(Дата)— последнюю (00:00:00последнего дня… точнее,23:59:59). Пару этих функций используют как границы периода для запросов.ДобавитьМесяц(Дата, ЧислоМесяцев)сдвигает дату на нужное число месяцев; отрицательное число — назад. Функция сама корректно обрабатывает концы месяцев.Месяц(Дата)даёт число от 1 до 12 — пригодится для условий и выбораВыбор Из.Формат(Дата, "ДФ='MMMM'")выводит название месяца в именительном падеже («январь»). Для «января» в составе даты используйте длинный форматФормат(Дата, "ДЛФ=DD").
На клиенте вместо ТекущаяДата() берите ТекущаяДатаСеанса(). Функция ТекущаяДата() доступна только на сервере и во внешнем соединении — на клиенте вызов приведёт к ошибке.
Если на форме обработки нужен выбор месяца пользователем, не делайте «поле месяца» руками. Добавьте реквизит формы типа СтандартныйПериод и выведите его на форму — 1С сама нарисует привычный выбор периода со стандартными вариантами:
Период = Новый СтандартныйПериод;
Период.Вариант = СтандартныйПериодВариант.ЭтотМесяц;
ДатаНачала = Период.ДатаНачала; // первое число месяца
ДатаОкончания = Период.ДатаОкончания; // последний день месяца
Такой подход даёт пользователю знакомый интерфейс и избавляет от ручного пересчёта границ.
В запросе границы месяца удобно передавать параметрами, а считать их в коде перед выполнением:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура,
| СУММА(Продажи.Сумма) КАК Сумма
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Продажи
|ГДЕ
| Продажи.Дата МЕЖДУ &НачалоМесяца И &КонецМесяца
|СГРУППИРОВАТЬ ПО
| Продажи.Номенклатура";
Запрос.УстановитьПараметр("НачалоМесяца", НачалоМесяца(Дата));
Запрос.УстановитьПараметр("КонецМесяца", КонецМесяца(Дата));
Результат = Запрос.Выполнить();
Так вы не зависите от длины месяца: функции сами подставят 28, 30 или 31 день, а с КонецМесяца() в условие МЕЖДУ попадёт и последний день целиком.
Как не выбирать месяц заново при каждом открытии
Если вы смотрите один и тот же отчёт за месяц каждый день, выбирать период руками утомительно. Выбор можно закрепить.
- Сохраните настройку отчёта. Задали нужный период и оформление →
Ещё → Сохранить настройки→ дайте имя (например, «Продажи за месяц»). При следующем запуске выберите эту настройку черезЕщё → Выбрать настройки. - Проверьте период по умолчанию. Многие отчёты открываются с периодом «текущий месяц» автоматически. Если открывается не тот период, посмотрите, какой вариант стоит в сохранённой настройке по умолчанию.
- Относительный период переживает смену месяца. Вариант «Этот месяц» не привязан к конкретным датам: в ноябре он покажет ноябрь, в декабре — декабрь. Поэтому для регулярного отчёта выбирайте относительный вариант, а не произвольные даты — иначе в новом месяце придётся менять руками.
Относительные периоды («Этот месяц», «Прошлый месяц») удобны ещё и для рассылок и регламентных заданий: отчёт всегда соберётся за актуальный месяц без вашего участия.
Частые ошибки при выборе месяца
Ошибки по теме повторяются из конфигурации в конфигурацию — вот те, что стоят реального времени.
- 🗓️ Выбрали дату вместо периода. В отчёте задали одну дату начала, забыли дату конца — отчёт собрал данные «от и до одного дня» и вышел пустым. Для месяца нужен диапазон, а не точка.
- 🔁 Период сбрасывается при каждом открытии отчёта. Это не сбой: отчёт открывается с периодом по умолчанию. Чтобы запомнить выбор, сохраните настройку отчёта (
Ещё → Сохранить настройки) и выберите её при следующем запуске. - ⚠️ Перепутали месяц документа и дату документа (особенно в зарплате) — начисления ушли в чужой период.
- 🧮 В коде считали границы месяца руками (
"01." + Месяц + ...), склеивая число со строкой безФормат. Из-за этого в однозначных месяцах терялся ноль (1вместо01), и дата получалась битой. ИспользуйтеНачалоМесяца()/КонецМесяца()— они не ошибаются с длиной месяца и форматом. - 📉 Выбрали «Этот месяц», а данные за прошлый. Проверьте системную дату компьютера или сервера: «этот месяц» отсчитывается от неё. Сбитые часы сервера дают неверный период.
Частые вопросы
Почему в поле отчёта нет варианта «Месяц», а только «Этот месяц» и «Прошлый месяц»?
Как выбрать не весь месяц, а его часть?
Можно ли выбрать сразу несколько месяцев?
Как в коде получить название месяца прописью?
Формат(Дата, "ДФ='MMMM'") даёт название в именительном падеже («январь»). Для даты целиком с месяцем в родительном падеже («1 января 2026 г.») берите Формат(Дата, "ДЛФ=D").Чем отличается `ТекущаяДата()` от `ТекущаяДатаСеанса()`?
ТекущаяДата() работает только на сервере и возвращает дату компьютера-сервера. На клиенте используют ТекущаяДатаСеанса() — она безопасна в любом контексте и учитывает смещение сеанса.