Функции языка запросов 1С. Работа с датами
Функции работы с датами
Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.
Одной из первых моих статей в этой рубрике была небольшая шпаргалка по работе с датами, но о датах в запросах там было написано очень мало. В запросах 1С с датами приходится работать довольно часто, особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии).
Функция Год
ГОД(<Дата>)
ВЫБРАТЬ ЗаказПокупателя.Дата, ГОД(ЗаказПокупателя.Дата) КАК Год, ЗаказПокупателя.Ссылка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ГОД(ЗаказПокупателя.Дата) > 2015
Функция Квартал
КВАРТАЛ(<Дата>)
Возвращает номер квартала даты (целочисленное значение от 1 до 4)
ВЫБРАТЬ ЗаказПокупателя.Дата, КВАРТАЛ(ЗаказПокупателя.Дата) КАК НомерКвартала, ЗаказПокупателя.Ссылка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Ссылка = &ЗаказПокупателя
Предположим, в ЗаказПокупателя передаем заказ №100 от 12.03.2016, в этом случае наш запрос вернет НомерКвартала = 1
Функция Месяц
МЕСЯЦ(<Дата>)
Принимает параметр типа ДАТА. Возвращает номер месяца даты (целочисленное значение от 1 до 12).
ВЫБРАТЬ МЕСЯЦ(ДАТАВРЕМЯ(2016, 6, 23))
Запрос вернет – 6
Функция ДеньГода
ДЕНЬГОДА(<Дата>)
Принимает параметр типа ДАТА. Возвращает номер дня в году (целочисленное значение от 1 до 366).
ВЫБРАТЬ ДЕНЬГОДА(ДАТАВРЕМЯ(2016, 6, 23))
Запрос вернет – 175
Функция День
ДЕНЬ(<Дата>)
Принимает параметр типа ДАТА. Возвращает номер дня в месяце (целочисленное значение от 1 до 31).
ВЫБРАТЬ ДЕНЬ(ДАТАВРЕМЯ(2016, 6, 23))
Запрос вернет – 23
Функция Неделя
НЕДЕЛЯ(<Дата>)
Принимает параметр типа ДАТА. Возвращает номер недели в году.
ВЫБРАТЬ НЕДЕЛЯ(ДАТАВРЕМЯ(2016, 6, 23))
Запрос вернет – 25
Функция ДеньНедели
ДЕНЬНЕДЕЛИ(<Дата>)
Принимает параметр типа ДАТА. Возвращает номер дня недели (целочисленной значение от 1 (понедельник) до 7 (воскресенье)).
ВЫБРАТЬ ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2016, 6, 23))
Запрос вернет – 4
Функция Час
ЧАС(<Дата>)
Принимает параметр типа ДАТА. Возвращает час суток (целочисленное значение от 0 до 23).
ВЫБРАТЬ ЧАС(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))
Запрос вернет – 18
Функция Минута
МИНУТА(<Дата>)
Принимает параметр типа ДАТА. Возвращает минуты часа (целочисленное значение от 0 до 59).
ВЫБРАТЬ МИНУТА(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))
Запрос вернет – 25
Функция Секунда
СЕКУНДА(<Дата>)
Принимает параметр типа ДАТА. Возвращает секунды минуты (целочисленное значение от 0 до 59).
ВЫБРАТЬ СЕКУНДА(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))
Запрос вернет – 36
Функция НачалоПериода
НАЧАЛОПЕРИОДА(<Дата>, <Период>)
Функция возвращает для указанной даты начало периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2016, 6, 23), МЕСЯЦ)
Запрос вернет – 01.06.2016
Функция КонецПериода
КОНЕЦПЕРИОДА(<Дата>, <Период>)
Функция возвращает для указанной даты конец периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
ВЫБРАТЬ КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2016, 6, 23), МЕСЯЦ)
Запрос вернет – 30.06.2016
Функция ДобавитьКДате
ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)
Функция добавляет к дате указанное количество временных интервалов.
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2016, 6, 15), МЕСЯЦ, 4)
Получаем дату 15.10.2016 0:00:00 Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.
Функция РазностьДат
РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)
Функция рассчитывает календарную разницу между двумя датами и ее нельзя использовать в местах, где необходимо рассчитать банковских или рабочих дней. Тип может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2016, 2, 15), ДАТАВРЕМЯ(2016, 6, 12), ДЕНЬ)
Возвращает 118 дней.
может кому будет полезно
КАК вычислить вручную ПериодМЕсяц по аналогии с оборотным регистром :
ВЫБОР
КОГДА МЕСЯЦ(&НачалоПериода) = МЕСЯЦ(Док.Дата) И МЕСЯЦ(&КонецПериода) = МЕСЯЦ(Док.Дата)
ТОГДА &НачалоПериода
ИНАЧЕ НачалоПериода(Док.Дата, МЕСЯЦ)
КОНЕЦ КАК ПериодМЕсяц,