Функция ДОБАВИТЬКДАТЕ(Дата, Период, Количество) в запросе 1С.
Функция ДОБАВИТЬКДАТЕ(Дата, Период, Количество) в запросе 1С.
ДОБАВИТЬКДАТЕ() – добавляет определенное количество периода для даты.
Так же можно отнять определенное количество. Количество указать со знаком минус.
Период может быть равен:
ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ и так далее.
Код:
Процедура ПериодВ1сЗапрос() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток, | КОНЕЦПЕРИОДА(ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата, ДЕНЬ) КАК День, | ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата КАК ДатаДокумента, | ДОБАВИТЬКДАТЕ(ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата, ДЕНЬ, 3) КАК ДатаПлюс |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&НаДату, ) КАК ПартииТоваровНаСкладахОстатки |ГДЕ | ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслуг"; Запрос.УстановитьПараметр("НаДату", ТекущаяДата()); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить("Дата документа "+ВыборкаДетальныеЗаписи.ДатаДокумента +" День: "+ВыборкаДетальныеЗаписи.День +" , ДатаПлюс: " +ВыборкаДетальныеЗаписи.ДатаПлюс); КонецЦикла; КонецПроцедуры
В окне сообщения:
Дата документа 10.02.2007 16:55:02 День: 10.02.2007 23:59:59 , ДатаПлюс: 13.02.2007 16:55:02
Дата документа 10.02.2007 16:55:03 День: 10.02.2007 23:59:59 , ДатаПлюс: 13.02.2007 16:55:03
Дата документа 04.04.2007 12:00:03 День: 04.04.2007 23:59:59 , ДатаПлюс: 07.04.2007 12:00:03
Дата документа 01.06.2008 12:00:00 День: 01.06.2008 23:59:59 , ДатаПлюс: 04.06.2008 12:00:00
Дата документа 10.02.2007 21:18:19 День: 10.02.2007 23:59:59 , ДатаПлюс: 13.02.2007 21:18:19
Код для минуса.
Процедура ПериодМинусВ1сЗапрос()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ПартииТоваровНаСкладахОстатки.Номенклатура,
| ПартииТоваровНаСкладахОстатки.КоличествоОстаток,
| КОНЕЦПЕРИОДА(ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата, ДЕНЬ) КАК День,
| ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата КАК ДатаДокумента,
| ДОБАВИТЬКДАТЕ(ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата, ДЕНЬ, -3) КАК ДатаПлюс
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&НаДату, ) КАК ПартииТоваровНаСкладахОстатки
|ГДЕ
| ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслуг»;
Запрос.УстановитьПараметр(«НаДату», ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(«Дата документа «+ВыборкаДетальныеЗаписи.ДатаДокумента
+» День: «+ВыборкаДетальныеЗаписи.День
+» , минусом количество 3, тогда ДатаПлюс: « +ВыборкаДетальныеЗаписи.ДатаПлюс);
КонецЦикла;
КонецПроцедуры
Вывод:
Дата документа 10.02.2007 16:55:03 День: 10.02.2007 23:59:59 , минусом количество 3, тогда ДатаПлюс: 07.02.2007 16:55:03
Дата документа 04.04.2007 12:00:03 День: 04.04.2007 23:59:59 , минусом количество 3, тогда ДатаПлюс: 01.04.2007 12:00:03
Дата документа 01.06.2008 12:00:00 День: 01.06.2008 23:59:59 , минусом количество 3, тогда ДатаПлюс: 29.05.2008 12:00:00
Дата документа 10.02.2007 21:18:19 День: 10.02.2007 23:59:59 , минусом количество 3, тогда ДатаПлюс: 07.02.2007 21:18:19