Передать параметр с годом в дату

1. katyabelova 14.11.19 14:23 Сейчас в теме
Здравствуйте, уважаемые участники форума!
Подскажите пожалуйста, можно ли как-то в запросе передавать параметр для части даты?
Запрос для выборки договоров по дате, в которой год передаётся параметром в процедуру, код ниже.
Как я поняла, с ДАТАВРЕМЯ() такой фокус не получится. Возможно, есть какие-то альтернативы?
Заранее спасибо!

Процедура Тест(Год)
	ГодБезПробела = Строка(Год);
	ГодБезПробела = СтрЗаменить(ГодБезПробела, Символы.НПП, "");
	 	
 	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Год", Год); 
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Договоры.Ссылка как Договор 
		|ИЗ
		|	Справочник.Договоры КАК Договоры
		|ГДЕ
		|	Договоры.ДатаДоговора МЕЖДУ ДАТАВРЕМЯ(&Год, 1,1) И ДАТАВРЕМЯ(&Год, 12, 31) 
		|	И Договоры.НаправлениеДеятельности.Наименование = ""Сельхоз"" ";
		 	
	РезультатЗапроса = Запрос.Выполнить();
 
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. user623969_dusa 14.11.19 14:31 Сейчас в теме +0.3 $m
(4) да я разрешил пусть делает так только заменит Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Год", 2019)
перед выполнением запроса
katyabelova; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user623969_dusa 14.11.19 14:25 Сейчас в теме
4. nomad_irk 68 14.11.19 14:27 Сейчас в теме
(1) Не нужно приводить значение к строке в данном случае и используйте конструкцию

|ГДЕ
| Год(Договоры.ДатаДоговора) = &Год

&ГОД в данном случае должен быть числом.
5. user623969_dusa 14.11.19 14:31 Сейчас в теме +0.3 $m
(4) да я разрешил пусть делает так только заменит Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Год", 2019)
перед выполнением запроса
katyabelova; +1 Ответить
7. nomad_irk 68 14.11.19 14:43 Сейчас в теме
(5)В параметр должно передаваться числовое значение, а не строковое и заменять в тексте запроса ничего не нужно.
Сделав Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Год", 2019), в тексте запроса вы получите "2 019"
8. user623969_dusa 14.11.19 14:53 Сейчас в теме
(7) внимательнее, не боимся, строковая переменная Текст у запроса числовые данные внутри себя не разбивает на подгруппы, в строке 2019 запроса она не превратится в 2 019 к остальному вопросов нет.. если же передавать Число(2019) то конечно надо преобразовать Форматом
10. katyabelova 14.11.19 15:03 Сейчас в теме
(5) Спасибо, разобралась
3. platonov.e 158 14.11.19 14:26 Сейчас в теме
Вам нужно начало года и конец года?
6. login1020 133 14.11.19 14:36 Сейчас в теме
К чему все эти сложности? По запросу видно что дата договора между началом и концом года.
Передавать сразу год, а в тексте писать
ГДЕ
	Договоры.ДатаДоговора МЕЖДУ &началопериода  И &конецПериода

ИЛИ
ГДЕ
	Договоры.ДатаДоговора  МЕЖДУ НАЧАЛОПЕРИОДА(&Год, ГОД) И КОНЕЦПЕРИОДА(&Год, ГОД) 


Только дату передавать как дату,а не строку
platonov.e; +1 Ответить
9. Sashares 34 14.11.19 15:02 Сейчас в теме
Поддержу (6) лучше до запроса сформировать параметры с датой на основе года для начала и окончания периода.
Чем меньше дополнительных вычислений в запросе, тем он быстрее выполнится.
11. katyabelova 14.11.19 15:05 Сейчас в теме
Большое спасибо. всем кто откликнулся :3
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день