Многие программисты при написании запросов пользуются очень неудобным методом дополнения текста запроса исходя из выбранных пользователем или переданными в процедуру параметрами. Зачастую это выглядит следующим образом:
…Возьмем, как пример, вышеуказанный запрос. Ничего сложного в нем нет, выбирается справочник Номенклатура и поля Ссылка,Код и Наименование. При использовании каких либо параметров отбора по данному запросу (если не использовать СКД, т. к. в ней отбор произвести не сложно) многие начинают «оптимизировать» запрос следующим образом
(В нашем примере мы хотим совершить отбор справочника по определенной номенклатуре):
При наличии нескольких таких параметров, сами представляете как будет выглядеть код программы, тем более что редактировать данный запрос в конструкторе запросов не представляется очень удобным, так как при открытии мы будем видеть только основной запрос без наложенных на него условий.
Советую при написании таких запросов пользоваться следующей схемой построения запроса:
Как видим в конструкции запроса «ГДЕ» у нас появилась конструкция «ВЫБОР» которая срабатывает на значение параметра «ОтборПоНоменклатуре». Таким образом имеяя один общий текст запроса, который легко изменяется в конструкторе запросов, мы имеем различные результаты выполнения этого запроса в зависимости от заполнения «НоменклатурыДляОтбора» т. е. В данном случае мы получаем достаточно универсальный запрос. Данный пример можно развить уже в необходимом вам направлении и применять в других различных запросах.