Рассмотрим функцию: ДОБАВИТЬКДАТЕ(ИсходнаяДата, Период, Количество).
Эта функцию применяется в запросе 1С для вычисления новой даты, можно прибавить (отнять) определенное количество периода.
Период принимает значения: ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ, неделя, час, минута, секунда. Тип значения - строка.
Количество - количество времени (измеряется согласно значению Период).
Пример Количество = 1.
Тогда:
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | АвансовыйОтчет.Номер, | АвансовыйОтчет.Дата, | ДОБАВИТЬКДАТЕ(АвансовыйОтчет.Дата, ГОД, 2) КАК НоваяДата |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи Сообщить("Дата документа "+ВыборкаДетальныеЗаписи.Дата+ " кол-во: 2, тогда вычисляемая дата: "+ВыборкаДетальныеЗаписи.НоваяДата); КонецЦикла; КонецПроцедуры
Результат:
Дата документа 22.01.2005 13:30:00 кол-во: 2, тогда вычисляемая дата: 22.01.2007 13:30:00
Что бы отнять, количество устанавливают со знаком минус.
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | АвансовыйОтчет.Номер, | АвансовыйОтчет.Дата, | ДОБАВИТЬКДАТЕ(АвансовыйОтчет.Дата, Минута, -2) КАК НоваяДата |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи Сообщить("Дата документа "+ВыборкаДетальныеЗаписи.Дата+ " кол-во: - 2, тогда вычисляемая дата: "+ВыборкаДетальныеЗаписи.НоваяДата); КонецЦикла; КонецПроцедуры
Дата документа 22.01.2005 13:30:00 кол-во: - 2, тогда вычисляемая дата: 22.01.2005 13:28:00
В условии запроса 1с 83:
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя.Номер, | ЗаказПокупателя.Дата |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(&ТекДата, День, -10) И ДОБАВИТЬКДАТЕ(&ТекДата, День, 10)"; Запрос.УстановитьПараметр("ТекДата",Дата("20050115")); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи Сообщить("Дата документа "+ВыборкаДетальныеЗаписи.Дата); КонецЦикла; КонецПроцедуры