Как установить условие параметра в звпросе что бы он выполнялся (Номенклатура)
/// Мне надо что бы можно было выбрать из списка выбранной номенклатуры
САМ ЗАПРОС
Функция НачальныйОстаток() Запрос = Новый Запрос; Запрос.Параметры.Вставить("НачалоПериода", НачалоДня(НачалоПериода)); Запрос.Параметры.Вставить("Склад", Склад); /// Это условие если Поле номенклатура заполнено, тогда выбирается выбранная, иначе все /// Мне надо что бы можно было выбрать из списка выбранной номенклатуры Запрос.Параметры.Вставить("Номенклатура", Номенклатура); Если Не ЗначениеЗаполнено(Номенклатура) Тогда Запрос.УстановитьПараметр("ВсеНоменклатура", Истина); Иначе Запрос.УстановитьПараметр("ВсеНоменклатура", Ложь); КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Склад КАК Склад, | ВложенныйЗапрос.СкладТипСклада КАК ТипСклада, | ВложенныйЗапрос.НоменклатураАртикул КАК Артикул, | ВложенныйЗапрос.НоменклатураКод КАК Код, | ВложенныйЗапрос.НоменклатураКонтрагентШифр КАК Шифр, | ВложенныйЗапрос.Номенклатура КАК Номенклатура, | ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК Характеристика, | ВложенныйЗапрос.КоличествоОстаток КАК НачальныйОстатокКол, | ВложенныйЗапрос.Цена1го, | ВложенныйЗапрос.Цена |ИЗ | (ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад КАК Склад, | ТоварыНаСкладахОстатки.Склад.ТипСклада КАК СкладТипСклада, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК НоменклатураАртикул, | ТоварыНаСкладахОстатки.Номенклатура.Код КАК НоменклатураКод, | ТоварыНаСкладахОстатки.Номенклатура.Контрагент.Шифр КАК НоменклатураКонтрагентШифр, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, | ЦеныНоменклатурыСрезПоследних.Цена1го КАК Цена1го, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена | ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода, Склад =Склад) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос |ГДЕ | ВЫБОР | КОГДАВсеНоменклатура | ТОГДА ИСТИНА | ИНАЧЕ ВложенныйЗапрос.Номенклатура =Номенклатура | КОНЕЦ"; ТаблицаДокументов = Запрос.Выполнить().Выгрузить(); Возврат ТаблицаДокументов; КонецФункции
| РегистрНакопления.ТоварыНаСкладах.Остатки( | &НачалоПериода, | Склад =Склад | И ВЫБОР | КОГДАНоменклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | ТОГДА ИСТИНА | ИНАЧЕ Номенклатура В (&Номенклатура) /// ???? | КОНЕЦ) КАК ТоварыНаСкладахОстатки
В первое условие запрос у вас не попадает, потому что остатков номенклатуры по пустой ссылке не может быть в регистре. У Вас изначально там было условие "ВЫБОР КОГДАВсеНоменклатура".
А условие " В (&Номенклатура)" работает и на равенство (если параметр - это элемент справочника и Вам нужно проверять "РАВНО") и на вхождение (если это список значений и Вам нужно проверять "В СПИСКЕ"), все зависит от того, какое значение вы в него передадите.
Ниже запрос к моей базе, некоторые поля заменены, т.к. у вас база специфичная, ну а вообще не работать не должно