No Image

Функции работы с датами в запросах 1с

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

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

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

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

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

Как получить начало или конец года, полугодия, квартала, месяца, декады, недели, дня, часа, минуты в запросах 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

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

Тип «Дата» в 1С входит в число 4 основных типов данных наряду с числом, строкой и булево. В конфигурациях даты встречаются повсеместно – при разработке невозможно избежать работы с этим типом данных. Поэтому лучше начинать писать запросы, уже понимая, как обрабатывать даты, какие есть возможности для работы с ними, как они хранятся, а до этого «безопаснее» использовать услуги программистов по доработке 1С, которые предоставляют большинство компаний-франчайзи. Рассмотрим на примерах все нюансы написания запросов с различными датами.

Примеры работы с датами в запросах 1С

В первую очередь, необходимо получить дату в запросе в нужном формате – со временем или без него. Выполнить эту задачу можно несколькими путями:

  1. Передать через параметр. Получить текущую дату сеанса можно только этим методом;
  2. Получить дату в запросе из поля выборки;
  3. Преобразовать из числовых значений с помощью функции ДАТАВРЕМЯ().

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

Аналогичной командой можно получить произвольную дату и время в запросе. При этом их можно указать с точностью до секунды, задав в качестве параметров 6 чисел. Если же используется только 3 числа, то часы, минуты и секунды будут приравнены к 0 (начало дня). Например, нам необходимо в запросе выбрать документы за первые 10 дней января 2018 года:

Читайте также:  Программа для ддоса сайтов

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

  • НАЧАЛОПЕРИОДА. В качестве параметров указывается дата и промежуток времени, в разрезе которого необходимо получить начало даты. Используется, чтобы преобразовать дату к формату без времени. Для этого необходимо задать второй параметр – «ДЕНЬ»;
  • КОНЕЦПЕРИОДА. Аналогичная команда, возвращающая последнюю дату в разрезе указанных в параметрах единиц;
  • ДОБАВИТЬКДАТЕ. Позволяет получить дату, большую на заданное количество указанных единиц времени. В качестве параметров функции указывают дату, единицу измерения времени и число;
  • РАЗНОСТЬДАТ. Получает разницу между датами в указанных единицах измерения;
  • ДЕНЬНЕДЕЛИ. Вернет порядковый номер одного из дней недели.

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

Преобразование типов в запросе 1С из числа или строки в дату – трудоемкое занятие. Из чисел можно получить дату с помощью функции ДАТАВРЕМЯ, из строки – комбинируя функцию ПОДСТРОКА и конструкцию ВЫБОР КОГДА ТОГДА ИНАЧЕ. Исходя из этого, разработчики предпочитают получать дату из других типов в модуле и передавать ее в запрос с помощью параметра. К сожалению, это не всегда реализуемо, поэтому приходится менять формат даты в запросе.

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

Надеемся, статья была вам полезна. Если у вас остались вопросы по указанию даты в запросе, обратитесь к нашим специалистам в рамках консультационных услуг по 1С, мы обязательно вам поможем.

рубрики: Запросы | Дата: 4 Февраль, 2016

Очень часто в запросах 1С приходится работать с датами. Особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии). Рассмотрим наиболее часто используемые функции языка запросов 1С для работы с датами. Примеры будем строить на основе регистра сведений РаботникиОрганизаций Конфигурации ЗУП редакция 2.5.

Читайте также:  Электронный бюджет инструкция по установке

ДАТАВРЕМЯ

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

В результате выполнения запроса получаем дату – 01.01.2016
На самом деле трудно представить ситуацию в которой в запросе дата будет указываться таким образом. Ведь когда надо указать период используются параметры. Но есть случай когда эта функция представляет особую ценность. Это когда нам надо в полях или в условиях запроса указать пустую дату. Напомню, что для языка 1С пустая дата имеет вид – 0001.01.01. Таким образом, чтобы получить пустую дату в запросе достаточно указать ДАТАВРЕМЯ(1, 1, 1). В качестве примера выберем из регистра сведений РаботникиОрганизаций записи у которых не заполнен ПериодЗавершения:

НАЧАЛОПЕРИОДА

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

Запрос вернет – 01.01.2016
А теперь пример. Как известно периодичность у регистра РаботникиОрганизаций один день. Составим запрос в котором вместо действительного периода записей будет отображаться дата начала месяца.

КОНЕЦПЕРИОДА

Синтаксис такой же как и у начала периода. И как ясно из названия возвращает конец периода по дате и типу периода. Подробно рассматривать не будем. Ограничимся мини примером.
Запрос:

Возвращает 31.01.2016 23:59:59
Как видим значение возвращается с точностью до секунды.

ДОБАВИТЬКДАТЕ

Добавляет к дате указанное количество временных интервалов.
Синтаксис:
ДОБАВИТЬКДАТЕ(Дата, ТипПериода, Количество)
ТипПериода принимает те же значения, что и для функции НАЧАЛОПЕРИОДА
Для примера выберем февральскую дату:

Получаем дату 15.04.2016 0:00:00 Несмотря на то, что февраль короткий месяц, день полученной даты тот же самый, что и у исходной. Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.

РАЗНОСТЬДАТ

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

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

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector