Оглавление:
- Основы работы.
- Параметры и операторы сравнения.
- Условия отбора.
- Группировки.
- Итоги.
- Вложенные запросы.
- Функции работы с датами.
В запросах 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
Во всех функциях, кроме функции ДАТАВРЕМЯ, в качестве параметра Дата может выступать не только конкретное значение даты (константа или параметр запроса), но и поля таблицы источника.