profile="http://gmpg.org/xfn/11"> Функция ДОБАВИТЬКДАТЕ(Дата, Период, Количество) в запросе 1С. | Разработчику о работе с 1С:Предприятие, Pascal, Паскаль

Функция ДОБАВИТЬКДАТЕ(Дата, Период, Количество) в запросе 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

Комментарии запрещены.