Имя: Пароль:
1C
1С v8
Параметры запроса
0 SkAt
 
22.10.18
11:56
Доброго времени суток! Собственно, может ответ очевидный, но я никак не могу сообразить. Есть Запрос вида

ВЫБРАТЬ
  Док.Ссылка КАК Ссылка
  ...

ГДЕ
  Док.Дата >= ДАТАВРЕМЯ(&Год,1,1,0,0,0)
  И Док.Дата <= ДАТАВРЕМЯ(&Год,1,1,23,59,59)

Неверный синтаксис запроса. Как мне передавать в качестве параметра год?
Заранее спасибо
1 Buster007
 
22.10.18
11:57
а что полностью дату нельзя передать, раз ты год передаешь?)
2 Buster007
 
22.10.18
11:59
я даже никогда не пробовал применить как ты, но подозреваю, что в эту функцию нельзя передать параметры.
3 Ненавижу 1С
 
гуру
22.10.18
12:01
(2) это не функция вообще
4 ktibo
 
22.10.18
12:07
Где Год(Док.Дата) = &Год И Месяц(Док.Дата) = 1 И День(Док.Дата)= 1
5 Zmich
 
22.10.18
12:09
(0). Можно так:
Запрос.Текст = "... ГДЕ Док.Дата >= ДАТАВРЕМЯ(" + ПеременнаяГод + ",1,1,0,0,0) И ..."
в таком случае не понадобится вообще параметр Год.
6 Alexandr_U1982
 
22.10.18
12:15
(0)
Е.Ю. Хрусталева. "Язык запросов 1С6Предприятия 8", 2013 г.
Глава 4. Оптимизация запросов

Не использовать в запросе функции от параметров
В языке запросов существуют разнообразные функции – функции для работы со
строками, функции для работы с датами и т. п. Нежелательно вычислять в запросе
значение этих функций от переданных в запрос параметров.
...
Но такой запрос будет работать неоптимально, так как СУБД «не поймет», что в условии запроса
используется константа (значение параметра Дата).
7 SkAt
 
22.10.18
12:16
(5) Отлично! То что нужно, спасибо. Вечно отношусь к тексту запроса не как к тексту))
8 Alexandr_U1982
 
22.10.18
12:18
+(6)Дату лучше сформировать до выполнения запроса и передать в запрос в качестве параметра.
9 1Сергей
 
22.10.18
12:18
Правильный ответ в (1)
Программист всегда исправляет последнюю ошибку.