Необязательные параметры в запросе СКД (и не только)
При установке параметров запроса часто в 1С применяют следующие конструкции:
//... "ГДЕ НЕ Договор.ПометкаУдаления И ВЫБОР КОГДА &Контрагент = Неопределено ТОГДА Договор.Контрагент = &Контрагент ИНАЧЕ ИСТИНА КОНЕЦ" Запрос.УстановитьПараметр("Контрагент", Контрагент); |
или
//... "ГДЕ НЕ Договор.ПометкаУдаления И Договор.Контрагент = &Контрагент"); Если ЗначениеЗаполнено(Контрагент) Тогда Запрос.УстановитьПараметр("Контрагент", Контрагент); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст, "И Договор.Контрагент = &Контрагент", ""); КонецЕсли; |
Эти конструкции не оптимальны по понятным причинам.
Если параметр необязателен (может быть заполнен, а может и нет), вместо этих конструкций можно использовать такую:
"(&Контрагент = Неопределено или Договор.Контрагент = &Контрагент)" //ПОЯСНЕНИЕ: //1 условие должно приходить в ИСТИНА, если параметр не заполнен //2 условие - проверка на соответствие |
А что насчет СКД?
Есть еще такое понятие как необязательные параметры в запросе СКД.
В СКД проще, необязательные условия можно оформлять фигурными скобками, вот так:
//... "ГДЕ НЕ Договор.ПометкаУдаления {ГДЕ Договор.Контрагент = &Контрагент}" |
Если вам была полезна эта информация, оставьте комментарий)