Запросы 1С:Предприятие 8. Функции работы с датами

Оглавление:

  1. Основы работы.
  2. Параметры и операторы сравнения.
  3. Условия отбора.
  4. Группировки.
  5. Итоги.
  6. Вложенные запросы.
  7. Функции работы с датами.

В запросах 1С, так же как и во встроенном языке платформы 1С:Предприятие, есть функции для работы с датами. Они помогают упростить преобразования дат в запросах, избежать использования большого количества параметров. Рассмотрим эти функции.

Как задать дату в запросах 1С в виде константы

Для этого используется функция ДАТАВРЕМЯ (Год, Месяц, День, Час, Минута, Секунда). Параметры Год, Месяц и День являются обязательными, остальные — нет. Если не указать время, то системой будет установлено начало дня.

Запрос.Текст="ВЫБРАТЬ
ДАТАВРЕМЯ (2016,09,28,12,22,00)"
; // Результат: 28 сентября 2016 12:22:00

Кроме того, в качестве параметров этой функции могут быть указаны только числа в явном виде. Нельзя в качестве параметров указывать значения других функций. Например, такая конструкция работать не будет:

Запрос.Текст="ВЫБРАТЬ
ДАТАВРЕМЯ (Год (Источник.Дата),09,28,12,22,00)
Из Справочник.Источник КАК Источник"
;

 

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

Для этого используются соответственно функции:

  • НачалоПериода (Дата, Период)
  • КонецПериода (Дата, Период)

В качестве параметра Дата передается значение с типом Дата. Параметр Период может принимать одно из следующих значений: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, ДЕКАДА, МЕСЯЦ, КВАРТАЛ, ПОЛУГОДИЕ, ГОД.

Запрос.Текст="ВЫБРАТЬ
НачалоПериода(ДАТАВРЕМЯ (2016,09,28,12,22,00), ДЕКАДА)"
; // Результат: 21 сентября 2016 0:00:00

Запрос.Текст="ВЫБРАТЬ
КонецПериода(ДАТАВРЕМЯ (2016,09,28,12,22,00), КВАРТАЛ)"
; // Результат: 30 сентября 2016 23:59:59

Как видно из примеров, в этих функциях можно использовать другие, вложенные, функции.

 

Как получить в запросах 1С год, день года, квартал, месяц, неделю, день недели, день, час, минуту, секунду из даты

Для этого существуют соответствующие функции, в которые нужно передать дату в качестве параметра.

  • Функция ГОД (Дата) — возвращает номер года;
  • Функция ДЕНЬГОДА (Дата) — возаращает номер дня в году;
  • Функция КВАРТАЛ (Дата) — возвращает номер квартала;
  • Функция МЕСЯЦ (Дата) — возвращает номер месяца;
  • Функция НЕДЕЛЯ (Дата) — возвращает номер недели в году;
  • Функция ДЕНЬНЕДЕЛИ (Дата) — возвращает номер дня в неделе (понедельник — 1, воскресенье — 7);
  • Функция ДЕНЬ (Дата) — возвращает номер дня в месяце;
  • Функция ЧАС (Дата) — возвращает час;
  • Функция МИНУТА (Дата) — возвращает минуты;
  • Функция СЕКУНДА (Дата) — возвращает секунды.
Запрос.Текст="ВЫБРАТЬ
ГОД(ДАТАВРЕМЯ (2016,09,28,12,22,00))"
; // Результат: 2016

Запрос.Текст="ВЫБРАТЬ
НЕДЕЛЯ(ДАТАВРЕМЯ (2016,09,28,12,22,00))"
; // Результат: 40

Запрос.Текст="ВЫБРАТЬ
ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ (2016,09,28,12,22,00))"
; // Результат: 3

Запрос.Текст="ВЫБРАТЬ
ДЕНЬГОДА(ДАТАВРЕМЯ (2016,09,28,12,22,00))"
; // Результат: 272

Запрос.Текст="ВЫБРАТЬ
ДЕНЬ(ДАТАВРЕМЯ (2016,09,28,12,22,00))"
; // Результат: 28

 

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

Для этого используется функция ДобавитьКДате (Дата, Период, Значение).

В качестве параметра Дата передается значение с типом Дата. Параметр Период может принимать одно из следующих значений: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, ДЕКАДА, МЕСЯЦ, КВАРТАЛ, ПОЛУГОДИЕ, ГОД.

Параметр Значение показывает количество добавляемых периодов. Если период нужно вычесть, то параметр Значение должен быть отрицательным.

Запрос.Текст="ВЫБРАТЬ
ДобавитьКДате(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ПОЛУГОДИЕ, 1)"
; // Результат: 28 марта 2017 12:22:00

Запрос.Текст="ВЫБРАТЬ
ДобавитьКДате(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДЕКАДА, -1)"
; // Результат: 18 сентября 2016 12:22:00

 

Как вычислить разность дат в запросах 1С

Для этого используется функция РазностьДат (Дата1, Дата2, Период).

Параметр Дата1 — дата, которую вычитают.

Параметр Дата2 — дата, из которой вычитают.

Параметр Период может принимать одно из следующих значений: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД. Он показывает, в каких единицах мы хотим получить результат

Запрос.Текст="ВЫБРАТЬ
РазностьДат(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДАТАВРЕМЯ(2017, 9, 28, 12, 22, 0), КВАРТАЛ)"
; // Результат: 4

Запрос.Текст="ВЫБРАТЬ
РазностьДат(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДАТАВРЕМЯ(2017, 9, 28, 12, 22, 0), Секунда)"
; // Результат: 31 536 000

Во всех функциях, кроме функции ДАТАВРЕМЯ, в качестве параметра Дата может выступать не только конкретное значение даты (константа или параметр запроса), но и поля таблицы источника.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *