Добавляет (или вычитает) к указанной дате заданное число месяцев.
Синтаксис
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)Примеры платформы
ДатаРождения = СтрокаТаблицы.КонтактноеЛицо.ДатаРождения;
ДеньРожденияБудущегоГода = ДобавитьМесяц(
(ДобавитьМесяц(НачалоДня(ДатаРождения), -(Год(ДатаРождения) - 1) * 12)),
(Год(ТекущаяДата()) * 12));Полное описание, параметры и ограничения
Глобальный контекст.ДобавитьМесяц (Global context.AddMonth)
Глобальный контекст (Global context)
ДобавитьМесяц (AddMonth)
Доступен, начиная с версии 8.0.
Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
<ЧислоМесяцев> (обязательный)
Тип: Число.
Количество месяцев, которое необходимо добавить к исходной дате. Если принимает отрицательное значение, то число месяцев вычитается.
Возвращаемое значение:
Тип: Дата.
Дата, полученная в результате добавления.
Описание:
Добавляет (или вычитает) к указанной дате заданное число месяцев.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:
ДатаРождения = СтрокаТаблицы.КонтактноеЛицо.ДатаРождения;
ДеньРожденияБудущегоГода = ДобавитьМесяц(
(ДобавитьМесяц(НачалоДня(ДатаРождения), -(Год(ДатаРождения) - 1) * 12)),
(Год(ТекущаяДата()) * 12));
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Рассчитать границы месяца для условия запроса
Используйте интервал от начала месяца включительно до начала следующего месяца исключительно. Это позволяет не подбирать последнюю секунду месяца. В запросе условие имеет вид: Дата >= &Начало И Дата < &Конец.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Исходная дата фиксирована: 15 сентября 2026 года.
Используется полуоткрытый интервал: начало включено, конец исключён.
ИсходнаяДата = Дата(2026, 9, 15, 12, 30, 0);
НачалоПериода = НачалоМесяца(ИсходнаяДата);
КонецПериода = ДобавитьМесяц(НачалоПериода, 1);
Сообщить(Формат(НачалоПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));
Сообщить(Формат(КонецПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));Разбор по шагам
НачалоМесяца обнуляет время и устанавливает первый день.
ДобавитьМесяц получает начало следующего месяца.
Формат применяется только для отображения; сравнивать даты нужно как даты.
Как проверить результат
Границы: 01.09.2026 00:00:00 и 01.10.2026 00:00:00.
Для декабря верхняя граница должна перейти на 1 января следующего года.
Ожидаемый результат
01.09.2026 00:00:00
01.10.2026 00:00:00
На что обратить внимание
В условии запроса используйте >= начало и < конец.
Не заменяйте верхнюю границу на последний день без учёта времени.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Сдвинуть начало периода на месяц
Сначала приводим дату к началу месяца: так результат не зависит от разного числа дней в месяцах. Отрицательное количество месяцев сдвигает дату назад.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Начальная дата: 15 сентября 2026 года.
Перед сдвигом приводим дату к первому дню месяца.
НачалоПериода = НачалоМесяца(Дата(2026, 9, 15));
ПредыдущийМесяц = ДобавитьМесяц(НачалоПериода, -1);
СледующийМесяц = ДобавитьМесяц(НачалоПериода, 1);
Сообщить(Формат(ПредыдущийМесяц, "ДФ=dd.MM.yyyy"));
Сообщить(Формат(СледующийМесяц, "ДФ=dd.MM.yyyy"));Разбор по шагам
Получаем стабильную точку отсчёта НачалоМесяца.
Сдвиг -1 даёт предыдущий месяц.
Сдвиг 1 даёт следующий месяц, сохраняя начало периода.
Как проверить результат
Результат: 01.08.2026 и 01.10.2026.
Для января предыдущий месяц должен оказаться в прошлом году.
Ожидаемый результат
01.08.2026
01.10.2026
На что обратить внимание
Сдвиг даты 31 числа имеет особенности коротких месяцев.
Месяц не равен фиксированному числу секунд.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.