Так как тип Дата содержит дату и время с точностью до секунды, то для того чтобы к некоторой дате прибавить один день, нужно увеличить ее значение на количество секунд, содержащихся в одном дне
СледующийДень = ТекущаяДата() + 60 * 60 * 24;
Для увеличения или уменьшения даты на некоторое количество месяцев можно использовать:
- функции работы со значением типа Дата во встроенном языке;
- функции работы со значением типа Дата в запросах.
В таблице ниже приводится ряд возможностей использования функций встроенного языка.
| Выражение |
Значение результата (тип) |
| ДобавитьМесяц(Дата(2005, 1, 31), 1) |
28.02.2005 0:00:00 (Дата) |
| ДобавитьМесяц(Дата(2005, 2, 28), -1) |
28.01.2005 0:00:00 (Дата) |
| КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1)) |
31.01.2005 23:59:59 (Дата) |
А вот пример функции, добавляющей количество дней к исходной дате при помощи запроса:
Функция ПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)
Запрос = Новый Запрос("
|ВЫБРАТЬ
|ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата");
Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата);
Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней);
Возврат Запрос.Выполнить().Выгрузить()[0].Дата;
КонецФункции
В тексте запроса используем функцию ДОБАВИТЬКДАТЕ(). В качестве параметров ей необходимо передать исходную дату, тип добавляемых периодов (в нашем случае жестко прописали ДЕНЬ) и количество добавляемых периодов.
Первый и последний параметры передали запросу, считав их из параметров (заголовка) нашей функции.
Далее запрос выполняется, и из него получаем значение выходного поля по первой (и единственной) строке.
Результаты выполнения вышеприведенной функции будут такими:
ПолучитьДень('20052802', 10) = 10.03.2005 0:00:00
ПолучитьДень('20042802', 10) = 09.03.2004 0:00:00 (поскольку 2004 год был високосным!).