Необязательные отборы в запросеПорою хочется написать текст запроса, чтобы включить в него всевозможные отборы, но использовать эти отборы только тогда, когда нужно.
Конечно, это легко делается с помощью построителя или динамического конструирования текста запроса, но есть еще один удобный вариант, когда лень возиться с построителем. | | Автор статьи: Гений 1С Последняя редакция №1 от 05.10.07 URL: http://kb.mista.ru/article.php?id=596 | |
Ключевые слова: запрос,текст
Суть в том, чтобы проверять, заполнен параметр или нет, через сравнение с НЕОПРЕДЕЛЕНО.
Пример:
//Возможные отборы: Номер, Контрагент, Рынок
Функция ПолучитьДоговорИзБазыДоговоров(П, Ключ)
Прм=Новый Структура("Номер, Контрагент, Рынок");
ЗаполнитьЗначенияСвойств(Прм, Ключ);
Возврат обБыстрыйЗапрос(
"ВЫБРАТЬ
| Т.Ссылка КАК Договор
|ИЗ
| Документ.КарточкаДоговора КАК Т
|ГДЕ
| ВЫБОР
| КОГДА &НомерДоговора <> НЕОПРЕДЕЛЕНО
| И &НомерДоговора <> Т.НомерДоговораКонтрагента
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &Контрагент <> НЕОПРЕДЕЛЕНО
| И Т.Контрагент <> &Контрагент
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &Рынок <> НЕОПРЕДЕЛЕНО
| И Т.Рынок <> &Рынок
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ",
Прм,
"Договор",
истина);
КонецФункции
|