Необязательные условия в тексте запроса

Необязательные условия в тексте запроса

Обычно при необходимости добавления такого условия делают так:

Если ВыбТовары.Количество()=0 Тогда
    Условие=””;
Иначе
    Условие=” ГДЕ Товар в (&Товары)“;
КонецЕсли;
Запрос.Текст=”ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура “+Условие;

В СКД можно поступить следующим образом:

 ПЗ = Новый ПостроительЗапроса;
  ПЗ.Текст = “
  |ВЫБРАТЬ
  |  Спр.Ссылка ИЗ Справочник.Номенклатура КАК Спр
  |{
  |ГДЕ
  |  Спр.Ссылка.* КАК Ссылка
  |}
“;


  ПЗ.Отбор.Добавить(“Ссылка“);
  ПЗ.Отбор.Ссылка.Значение = СписокНоменклатуры;
  ПЗ.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
  ПЗ.Отбор.Ссылка.Использование = Истина; // или (СписокНоменклатуры.Количество() > 0)
 
  ПЗ.Выполнить();

 

Есть еще интересный способ, однако в СКД не работает:

ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура
ГДЕ
   ВЫБОР 
        КОГДА &Товары=НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА 
        ИНАЧЕ Товар в (&Товары)
   КОНЕЦ