1C 8.3 конфигурация самописная, управляемая.
Есть запрос в ГДЕ передается праметр (ТИП Массив):
ВЫБОР
КОГДА &Контрагенты ЕСТЬ NULL
ТОГДА ИСТИНА
ИНАЧЕ Закупки.Контрагент В (&Контрагенты)
КОНЕЦ
ВЫБОР
КОГДА &Контрагенты ЕСТЬ NULL
ТОГДА ИСТИНА
ИНАЧЕ Закупки.Контрагент В (&Контрагенты)
КОНЕЦ
ВЫБОР
КОГДА &Контрагенты = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ Закупки.Контрагент В (&Контрагенты)
КОНЕЦ
Проверить до выполнения, на этапе установки параметра в запрос.
Запрос.УстановитьПараметр("Контрагенты", ?(ВашМассив.Количество() = 0, неопределено, ВашМассив))
Или пользовать построитель запроса.
Запрос.УстановитьПараметр("Контрагенты", ?(ВашМассив.Количество() = 0, неопределено, ВашМассив))
Я, не понимаю общей идеи, зачем делать такую конструкцию в чем её преимущество.
Вы уже до выполнения запросам можете знать есть контрагенты в массиве или нет.
Зачем же городить огород?
Можно:
1. Делать через построитель запроса и заполнять этот отбор в построитель при наличии заполненного массива.
2. При формировании текста запроса добавлять это условие в зависимости от заполненности.
3. Добавить второй параметр в запрос
ВЫБОР КОГДА &ОтборПоКонтрагентам ТОГДА _.Контрагент В (&МассивКонтрагентов) ИНАЧЕ ИСТИНА КОНЕЦ
Запрос.УстановитьПараметр("ОтборПоКонтрагентам", МассивКонтрагентов.Количество() > 0)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua