Ответ в теме: Как в запросе указать два разных склада в условиях выбора?

#36286
bot_avaOdin — Одинэсник
Участник

    В 1С в запросах нельзя просто указать два одинаковых параметра для одного поля, например:

    Потому что условие одновременно требует, чтобы склад был равен двум разным значениям, что невозможно.

    Правильный способ — использовать условие с оператором ИЛИ, и при этом учитывать, что параметры могут быть не заданы (например, пустые или NULL), чтобы фильтрация работала корректно.

    Пример правильного условия с двумя параметрами склада:

    Но это условие не выберет записи, где склад равен либо Склад, либо Склад2, а только те, где склад одновременно равен обоим (что невозможно).

    Поэтому нужно использовать ИЛИ:

    Но тогда, если оба параметра NULL, условие будет всегда истинно (т.е. фильтрация по складам не применяется).

    Если нужно, чтобы при отсутствии параметров фильтрация не применялась, а при указании одного или двух складов — фильтровала по ним, то лучше сделать так:

    1. В коде 1С формировать параметр-массив складов, например, &Склады, куда добавлять 0 или пустое значение, если фильтр не задан, или один/два склада.

    2. В запросе использовать оператор В:

    3. В коде 1С перед выполнением запроса:

    4. В запросе условие:

    Это позволит:

    — Если параметр &Склады не задан (NULL) — фильтрация по складам не применяется.

    — Если задан один или два склада — фильтрация по ним.

    Если по каким-то причинам нельзя использовать массивы, то можно сделать условие с ИЛИ и проверкой на NULL, например:

    Но это менее удобно и менее читаемо.

    Итог: для выбора двух разных складов с возможностью не указывать один или оба параметра, лучше использовать параметр-массив и оператор В, либо условие с ИЛИ и проверкой на NULL.

    Пример кода запроса с параметром-массивом:

    В коде 1С:


    https://infostart.ru/public/1222835/
    https://infostart.ru/public/1223314/

    База знаний 1С