Глобальный контекст.ДобавитьМесяц

Методы · AddMonth

Добавляет (или вычитает) к указанной дате заданное число месяцев.

Синтаксис

ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)

Примеры платформы

ДатаРождения = СтрокаТаблицы.КонтактноеЛицо.ДатаРождения;
ДеньРожденияБудущегоГода = ДобавитьМесяц(
    (ДобавитьМесяц(НачалоДня(ДатаРождения), -(Год(ДатаРождения) - 1) * 12)),
    (Год(ТекущаяДата()) * 12));
Полное описание, параметры и ограничения

Глобальный контекст.ДобавитьМесяц (Global context.AddMonth)

Глобальный контекст (Global context)

ДобавитьМесяц (AddMonth)

Доступен, начиная с версии 8.0.

Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Параметры:

<Дата> (обязательный)
Тип: Дата.
Исходная дата.

<ЧислоМесяцев> (обязательный)
Тип: Число.
Количество месяцев, которое необходимо добавить к исходной дате. Если принимает отрицательное значение, то число месяцев вычитается.
Возвращаемое значение:
Тип: Дата.
Дата, полученная в результате добавления.
Описание:

Добавляет (или вычитает) к указанной дате заданное число месяцев.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:

ДатаРождения = СтрокаТаблицы.КонтактноеЛицо.ДатаРождения;
ДеньРожденияБудущегоГода = ДобавитьМесяц(
(ДобавитьМесяц(НачалоДня(ДатаРождения), -(Год(ДатаРождения) - 1) * 12)),
(Год(ТекущаяДата()) * 12));

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Рассчитать границы месяца для условия запроса

Используйте интервал от начала месяца включительно до начала следующего месяца исключительно. Это позволяет не подбирать последнюю секунду месяца. В запросе условие имеет вид: Дата >= &Начало И Дата < &Конец.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Исходная дата фиксирована: 15 сентября 2026 года.

  2. Используется полуоткрытый интервал: начало включено, конец исключён.

ИсходнаяДата = Дата(2026, 9, 15, 12, 30, 0);
НачалоПериода = НачалоМесяца(ИсходнаяДата);
КонецПериода = ДобавитьМесяц(НачалоПериода, 1);

Сообщить(Формат(НачалоПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));
Сообщить(Формат(КонецПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));

Разбор по шагам

  1. НачалоМесяца обнуляет время и устанавливает первый день.

  2. ДобавитьМесяц получает начало следующего месяца.

  3. Формат применяется только для отображения; сравнивать даты нужно как даты.

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

  1. Границы: 01.09.2026 00:00:00 и 01.10.2026 00:00:00.

  2. Для декабря верхняя граница должна перейти на 1 января следующего года.

Ожидаемый результат

01.09.2026 00:00:00
01.10.2026 00:00:00

На что обратить внимание

  1. В условии запроса используйте >= начало и < конец.

  2. Не заменяйте верхнюю границу на последний день без учёта времени.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Сдвинуть начало периода на месяц

Сначала приводим дату к началу месяца: так результат не зависит от разного числа дней в месяцах. Отрицательное количество месяцев сдвигает дату назад.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Начальная дата: 15 сентября 2026 года.

  2. Перед сдвигом приводим дату к первому дню месяца.

НачалоПериода = НачалоМесяца(Дата(2026, 9, 15));
ПредыдущийМесяц = ДобавитьМесяц(НачалоПериода, -1);
СледующийМесяц = ДобавитьМесяц(НачалоПериода, 1);

Сообщить(Формат(ПредыдущийМесяц, "ДФ=dd.MM.yyyy"));
Сообщить(Формат(СледующийМесяц, "ДФ=dd.MM.yyyy"));

Разбор по шагам

  1. Получаем стабильную точку отсчёта НачалоМесяца.

  2. Сдвиг -1 даёт предыдущий месяц.

  3. Сдвиг 1 даёт следующий месяц, сохраняя начало периода.

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

  1. Результат: 01.08.2026 и 01.10.2026.

  2. Для января предыдущий месяц должен оказаться в прошлом году.

Ожидаемый результат

01.08.2026
01.10.2026

На что обратить внимание

  1. Сдвиг даты 31 числа имеет особенности коротких месяцев.

  2. Месяц не равен фиксированному числу секунд.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.