Привет.

Есть простой запрос по остаткам по складу. При пустом значении списка запрос не срабатывает. Что я делаю не так?

И второе. Нужно, чтобы ВыбСклад был связан с реквизитом типа ВидСравнения на форме. То есть: если ВидСравнения = "Равно", то выбираем непосредственно из справочника, а если ВидСравнения = "ВСписке", соотв подбирать с помощью списка. Научите, плз, как это сделать.

Спасибо.

```1c
    Запросост = Новый Запрос;
    Запросост.УстановитьПараметр("тзшк", тзшк);
    Запросост.УстановитьПараметр("Склад", ВыбСклад);

    Запросост .текст = "ВЫБРАТЬ
    | ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
    | СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    | ТоварыОрганизацийОстатки.Склад
    |ИЗ
    | РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
    |ГДЕ
    | ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
    | И ТоварыОрганизацийОстатки.Склад В (&Склад)
    |
    |СГРУППИРОВАТЬ ПО
    | ТоварыОрганизацийОстатки.Номенклатура,
    | ТоварыОрганизацийОстатки.Склад";
```
---
```1c
    Запросост = Новый Запрос;
    Запросост.УстановитьПараметр("тзшк", тзшк);
    Запросост.УстановитьПараметр("Склад", ВыбСклад);
    Запросост.УстановитьПараметр("НеФильтроватьСклады", ВыбСклад.Количество()=0);

    Запросост .текст = "ВЫБРАТЬ
    | ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
    | СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    | ТоварыОрганизацийОстатки.Склад
    |ИЗ
    | РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
    |ГДЕ
    | ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
    | И (&НеФильтроватьСклады или ТоварыОрганизацийОстатки.Склад В (&Склад))
    |
    |СГРУППИРОВАТЬ ПО
    | ТоварыОрганизацийОстатки.Номенклатура,
    | ТоварыОрганизацийОстатки.Склад";
```
---
можно так:
Запрос.УстановиьПараметр("Склады", Склады);
Запрос.УстановиьПараметр("СкладВыбран", Склады.Количество()>0);

Запрос.Текст = "Выбрать * ИЗ РегистрНакопления.ТоварыОрганизаций.Остатки ГДЕ НЕ СкладВыбран ИЛИ Склад В (&Склады)";
...
---
При пустом значении списка запрос не срабатывает,
а как иначе? сравнение с пустым списком ничего не даст.
По поводу вида сравнения, это смотря как он задается в форме, нужно проанализировать какой выбран вид сравнения и подменить его в тексте запроса через СтрЗаменить(), а вообще да, скд умеет все)
например вот так:

```1c
    |ГДЕ
    | ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
    | И ТоварыОрганизацийОстатки.Склад [ЗначениеУсловия]

    Если ВидСравнения = "Равно" Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, [ЗначениеУсловия], "= &Склад");
    ИначеЕсли ВидСравнения = "ВСписке" Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, [ЗначениеУсловия], "В (&Склад)");
    КонецЕсли
```
---
попробуй добавить код
Если НЕ ЗначениеЗаполнено() Тогда
 Запросост.текст = СтрЗаменить(Запросост.текст, "И ТоварыОрганизацийОстатки.Склад В (&Склад)", "");
Конецесли;
Сравнение В (&Склад) изменять не обязательно из-за того, что у тебя там список значений или ссылка, потому как последние версии платформы такие вещи игнорируют
---
используйте СКД там проще с отборами
---
СКД

Я пока не знаком с СКД. Времени изучать пока нет. Прошу помочь решить задачу именно этим способом, если это возможно.
---
не так понял задачу.
---
```1c
    Запросост = Новый Запрос;
    Запросост.УстановитьПараметр("тзшк", тзшк);
    Запросост.УстановитьПараметр("Склад", ВыбСклад);
    Запросост.УстановитьПараметр("НеФильтроватьСклады", ВыбСклад.Количество()=0);

    Запросост .текст = "ВЫБРАТЬ
    | ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
    | СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    | ТоварыОрганизацийОстатки.Склад
    |ИЗ
    | РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
    |ГДЕ
    | ТоварыОрганизацийОстатки.Номенклатура В ИЕРАРХИИ(&тзшк)
    | И (&НеФильтроватьСклады или ТоварыОрганизацийОстатки.Склад В (&Склад))
    |
    |СГРУППИРОВАТЬ ПО
    | ТоварыОрганизацийОстатки.Номенклатура,
    | ТоварыОрганизацийОстатки.Склад";
```
---
Хотел болдом выделить изменения, не очень красиво выглядит
---
Спасибо всем, вопрос решен)