Профессия — 1С

Рукопашный бой Карташ

Категории

Дата в запросах 1С

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

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




  • ДАТАВРЕМЯ

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

    
    ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 1)
    

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

    
    ВЫБРАТЬ
    	РаботникиОрганизаций.Период,
    	РаботникиОрганизаций.Сотрудник,
    	РаботникиОрганизаций.Должность,
    	РаботникиОрганизаций.ПодразделениеОрганизации
    ИЗ
    	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
    ГДЕ
    	РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)
    
  • НАЧАЛОПЕРИОДА

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

    
    ВЫБРАТЬ	НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2016, 1, 15), МЕСЯЦ)
    

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

    
    ВЫБРАТЬ
    	НАЧАЛОПЕРИОДА(РаботникиОрганизаций.Период, МЕСЯЦ) КАК НачалоМесяца,
    	РаботникиОрганизаций.Сотрудник,
    	РаботникиОрганизаций.Должность,
    	РаботникиОрганизаций.ПодразделениеОрганизации
    ИЗ
    	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
    




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

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

    
    ВЫБРАТЬ КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2016, 1, 15), МЕСЯЦ)
    

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

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

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

    
    ВЫБРАТЬ	ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2016, 2, 15), МЕСЯЦ, 2)
    

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

  • РАЗНОСТЬДАТ

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

    
    ВЫБРАТЬ	РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2016, 2, 15), ДАТАВРЕМЯ(2016, 3, 1), ДЕНЬ)
    

    возвращает 15

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

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

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

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С