Способы указания текущей даты
Текущая дата в запросе 1С часто требуется передавать. В языке запросов 1С 8.5 на момент написания статьи нет специальной функции для задания текущей даты. Необходимо передавать текущую дату через параметр. Как альтернатива — задать текущую дату статически вручную прямо в запросе.
Ручное указание текущей даты
Задайте дату статически через ДАТАВРЕМЯ(Год,Месяц,День[,Час,Минута,Секунда]) прямо в тексте запроса. Подходит только в том случае, когда запрос используется здесь и сейчас и не важна точность до минуты.
Например, укажем в качестве текущей даты 1 апреля 2026 год 12:30:
ВЫБРАТЬ
ДАТАВРЕМЯ(2026, 04, 01, 12, 30, 00) КАК ТекущаяДатаПримерноУказание текущей даты через параметр
Перед тем как передать текущую дату в качестве параметра ее нужно вначале получить. Сделать это можно либо также статически вручную, либо с помощью функций ТекущаяДата() и ТекущаяДатаСеанса().
Какую же использовать? Если говорить коротко, то при клиентском вызове используем ТекущаяДата(), а при серверном лучше ТекущаяДатаСеанса(). Первая функция при вызове на клиенте возвращает время клиентского компьютера, а при серверном текущее время сервера. Все бы ничего, но если часовой пояс сервера не совпадает с часовым поясом вашего сеанса, то функеция может вернуть не то время, какое хотелось бы. Как раз в этом случае вступает в игру функция ТекущаяДатаСеанса(). Она получает текущее время сервера и приводит его к часовому поясу вашего сеанса. Но функция доступна только на сервере и тонком клиенте! Но в нашем случа это подходит, ведь запрос мы будем формировать именно на сервере.
Итак, пример текущей даты в запросе через параметр:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Запрос.Текст =
"ВЫБРАТЬ
| &ТекущаяДата КАК ТекущаяДата";