Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как оптимизировать запрос с разными условиями (ГДЕ)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
logist
Есть запрос у которого может быть от 1-го до 4-х условий. Как составить текст раздела ГДЕ?
Ardi
Это запрос к конкретному типу объекта или к абстрактно-теоретическому?
Vofka
На примере какого-то кода можно показать идею?
logist
ВЫБРАТЬ
                   |    Резерв.Номенклатура,
                   |    Резерв.Контрагент,
                   |    Резерв.Подразделение,
                   |    Резерв.ТипРезерва,
                   |    Резерв.КоличествоОстаток КАК Количество
                   |ИЗ
                   |    РегистрНакопления.Резерв.Остатки КАК Резерв
                   |ГДЕ
                   |    Резерв.Номенклатура = &Номенклатура
                   |    И Резерв.Контрагент = &Контрагент
                   |    И Резерв.Подразделение = &Подразделение
                   |    И Резерв.ТипРезерва = &ТипРезерва


В данном запросе видно что результат будет при указании всех условий, а надо что бы был результат при комбинации условий от одного до всех четырех.
(если бы было хотя бы одно условие обязательным, то составить не проблема, но тут вот, не могу поймать мысль)
Ardi
Во первых нужно использовать не Где а параметры виртуальной таблицы.
logist
Цитата(Ardi @ 19.03.12, 21:30) необходимо зарегистрироваться для просмотра ссылки
Во первых нужно использовать не Где а параметры виртуальной таблицы.

Я это понимаю, это не суть важно для самого вопроса. Как мне сложить строку условий в таком случае? Вот в чем проблем.
Ardi
Иначе это нереальный быдлокодинг.

тУсловие = "";
Если не ВыбНоменклатура.Пустая() Тогда
тУсловие = тУсловие + ?(тУсловие="",""," и ")+" Резерв.Номенклатура = &Номенклатура ";
КонецЕсли;
Если не ВыбКонтрагент.Пустая() Тогда
тУсловие = тУсловие + ?(тУсловие="",""," и ")+" Резерв.Контрагент = &Контрагент ";
КонецЕсли;


....
                   |    Резерв.Номенклатура,
                   |    Резерв.Контрагент,
                   |    Резерв.Подразделение,
                   |    Резерв.ТипРезерва,
                   |    Резерв.КоличествоОстаток КАК Количество
                   |ИЗ
                   |    РегистрНакопления.Резерв.Остатки КАК Резерв"
+?(тУсловие="",""," Где ")+тУсловие;
logist
Ardi мега-спасибо!
endru
дабы не копипастить,


необходимо зарегистрироваться для просмотра ссылки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.