ДобавитьКДате в запросе 1С 8.3
Меню

ДобавитьКДате в запросе 1С 8.3

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

Синтаксис и пример использования функции

Многие программисты в начале изучения 1С сталкиваются с трудностями, когда понимают, что в процедурах и запросах команды отличаются. В обычном режиме написания кода мы можем только добавить к дате секунду (определенное количество секунд) или месяц, что достаточно неудобно. В запросе же у нас есть отличная функция «ДобавитьКДате».

Согласно встроенной подсказке в режиме произвольного выражения, система предлагает нам заполнить 3 параметра:

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

ДобавитьКДате в запросе 1С 8.3
ДобавитьКДате в запросе 1С 8.3


ВЫБРАТЬ
        	РеализацияТоваровУслуг.Номер КАК Номер,
        	РеализацияТоваровУслуг.Дата КАК Дата,
        	ДОБАВИТЬКДАТЕ(РеализацияТоваровУслуг.Дата, НЕДЕЛЯ, 1) КАК ДатаПлюсНеделя
ИЗ
        	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

В качестве количества нужных единиц измерения могут выступать другие поля запроса. Но они должны быть подходящего типа, иначе при подтверждении конструктор произвольного выражения вернет ошибку о неверных параметрах. Тем, кто пишет запросы вручную, без конструктора, придется самостоятельно контролировать этот нюанс, чтобы добавить месяц к дате или неделю.

ДобавитьКДате в запросе 1С 8.3
ДобавитьКДате в запросе 1С 8.3

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


ЗапросДаты = Новый Запрос;
ЗапросДаты.УстановитьПараметр("МояДата", ТекущаяДата());
ЗапросДаты.Текст = "ВЫБРАТЬ
|    ДОБАВИТЬКДАТЕ(&МояДата, НЕДЕЛЯ, -1) КАК ДатаМинусНеделя";
Результат = ЗапросДаты.Выполнить().Выбрать();
Результат.Следующий();
НоваяДата = Результат.ДатаМинусНеделя;

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

Рассказать друзьям
Предыдущая статья статья
Настройка итогов в СКД 1С 8.3
Следующая статья статья
Основные справочники 1С 8.3: создание и изменение элементов
Комментарии