Капитально об программе 1С 8.0-8.3-8.4, 7.7

ДобавитьКДате в запросе 1С

Функция ДобавитьКДате позволяет произвести выборку данных, за период отталкиваясь от одного значения даты на определенное количество единиц времени.

В синтаксисе языка аналог — функция ДобавитьМесяц, для остальных значений даты расчет всегда производится посекундно:  Дата1 = Дата2+24*3600*7.

В запросе же добавить период к значению можно гораздо гибче используя всего одну функцию.

Синтаксис функции

ДОБАВИТЬКДАТЕ(<НачальнаяДата>, <ЕдиницаВремени>, <Сдвиг>)

Начальная дата может быть:

Не хватает только функции ТекущаяДата() в запросе

Единицы времени:

         Секунда, Минута, Час, День, Неделя, Декада, Месяц,Квартал, Полугодие, Год

Сдвиг

Приводит к вычислению Сдвиг*ЕдиницаВремени

Положительное число  — увеличение периода

Отрицательно — уменьшение периода

Примеры запросов

Запрос, получающий дату на месяц раньше 01.10.2016

Выбрать
    ДобавитьКДате(ДатаВремя(2016,10,1),МЕСЯЦ,-1)

На 3 месяца позже:

Выбрать
    ДобавитьКДате(ДатаВремя(2016,10,1),МЕСЯЦ,3)

На 30 календарных дней раньше 

Выбрать
    ДобавитьКДате(ДатаВремя(2016,10,1),ДЕНЬ,-30)

12 часов дня

Выбрать
       ДобавитьКДате(ДатаВремя(2016,10,1),Секунда,12*3600), ДобавитьКДате(ДатаВремя(2016,10,1),ЧАС,12)

 

Особенность ДОБАВИТЬКДАТЕ

Возможно использовать значения другой таблицы для указания сдвига

Например, если есть таблица которая содержит номера часов:

Выбрать 1 как Номер

объединить все 

Выбрать 2

объединить все 

Выбрать 3

То ее можно соединить с календарем и для каждой даты получить дату со временем, использовав вот такую конструкцию:

ДобавитьКДате(_КалендарьГрафиков.Дата,ЧАС,Часы.Номер) как ДатаСоВременем