Автор: Дмитрий   Дата: 2018-08-22 00:00:00

ДОБАВИТЬКДАТЕ (ИсходнаяДата, Период, Количество) 1С 83

Рассмотрим функцию: ДОБАВИТЬКДАТЕ(ИсходнаяДата, Период, Количество).

Эта функцию применяется в запросе 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"));
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
		Сообщить("Дата документа "+ВыборкаДетальныеЗаписи.Дата);
	КонецЦикла;
КонецПроцедуры