Имя: Пароль:
1C
1С v8
Подскажите с запросом.
0 mzelensky
 
12.12.11
13:25
Доброго всем!

Имеется запрос:

ВЫБРАТЬ
   |    НоменклатураСпр.Ссылка КАК Ссылка,
   |    НоменклатураСпр.Родитель.Код КАК Родитель,
   |    НоменклатураСпр.ЭтоГруппа КАК ЭтоГруппа,
   |    НоменклатураСпр.Код,
   |    НоменклатураСпр.Артикул,
   |    НоменклатураСпр.Наименование,
   |    ВЫРАЗИТЬ(НоменклатураСпр.НаименованиеПолное КАК СТРОКА(1000)) КАК НаименованиеПолное,
   |    ВЫБОР
   |        КОГДА НоменклатураСпр.ЕдиницаХраненияОстатков <> ЗНАЧЕНИЕ(справочник.единицыизмерения.пустаяссылка)
   |            ТОГДА НоменклатураСпр.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код
   |        ИНАЧЕ НоменклатураСпр.БазоваяЕдиницаИзмерения.Код
   |    КОНЕЦ КАК ЕдИзм,
   |    НоменклатураСпр.ЦеноваяГруппа.Код КАК ЦеноваяГруппа,
   |    НоменклатураСпр.НоменклатурнаяГруппа.Код КАК НоменклатурнаяГруппа,
   |    НоменклатураСпр.ВесНетто,
   |    НоменклатураСпр.ЕдиницаИзмеренияМест.ЕдиницаПоКлассификатору.Код КАК ЕдИзмУпак,
   |    НоменклатураСпр.ЕдиницаИзмеренияМест.Коэффициент КАК ЕдИзмУпакКол
   |ПОМЕСТИТЬ ВТ
   |ИЗ
   |    Справочник.Номенклатура КАК НоменклатураСпр
   |ГДЕ
   |    НоменклатураСпр.ПометкаУдаления = ЛОЖЬ
   |    И НоменклатураСпр.ЭтоГруппа = ЛОЖЬ
   |  И НоменклатураСпр.Ссылка В Иерархии (&ПарАс)
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    НоменклатураСпр.Ссылка КАК Ссылка,
   |    НоменклатураСпр.Код КАК Код,
   |    ЦеныНоменклатурыСрезПоследних.ТипЦен.Код КАК ТипЦен,
   |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК цена,
   |    ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки КАК Наценка,
   |    ВЫБОР
   |        КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.БазовыйТипЦен = ЗНАЧЕНИЕ(справочник.типыценноменклатуры.пустаяссылка)
   |            ТОГДА ИСТИНА
   |        ИНАЧЕ ЛОЖЬ
   |    КОНЕЦ КАК ЕстьБазовыйТип,
   |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
   |ИЗ
   |    ВТ КАК НоменклатураСпр
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
   |                &ДК,
   |                Номенклатура В
   |                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
   |                        ВТ.Ссылка
   |                    ИЗ
   |                        ВТ КАК ВТ)) КАК ЦеныНоменклатурыСрезПоследних
   |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = НоменклатураСпр.Ссылка)
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
   |                &ДК,
   |                Номенклатура В
   |                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
   |                        ВТ.Ссылка
   |                    ИЗ
   |                        ВТ КАК ВТ) И Склад В ИЕРАРХИИ (&Склады) ) КАК ТоварыНаСкладахОстатки
   |        ПО (ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСпр.Ссылка)
   |
   | Где ( ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) >0  ИЛИ
   |        НоменклатураСпр.ЭтоГруппа = ИСТИНА )
   |УПОРЯДОЧИТЬ ПО
   |    Ссылка,
   |    ЦеныНоменклатурыСрезПоследних.ТипЦен.Рассчитывается
   |ИТОГИ
   |    МАКСИМУМ(Код),
   |    МИНИМУМ(Остаток)
   |ПО
   |    Ссылка

Смысл его прост - берем определенный ассортимет позиций и получаем для него цены и остакти. Проблема у меня заключается в параметре СКЛАД. Устанавливается он так:

ПарСклады=" И Склад В ИЕРАРХИИ (&Склады) ";          
Запрос.УстановитьПараметр("Склады" , СписокСкладов.склады.ВыгрузитьКолонку("Склад")  );    

По факту это табличная часть в элементе справочника.

Проблема в том, что по одним складам нужно получить ВСЕ ТОВАРЫ (с положительным и отрицательным остатком), а по другим только с положительным остатком. Определяется это галочкой в той же самой табличной части элемента справочника. Как наложить такое условие????
1 wade25
 
12.12.11
13:27
2 вложенных запроса сделать?
2 mzelensky
 
12.12.11
13:28
(0) самое просто вижу так:

Перенести условие по складу в "ГДЕ" и разделить все склады на 2 группы. Написать что-то типа:

ГДЕ (СкладыПолные В (&Склады)  ) или (СкладыТокСОстатком В (&Склады2) и ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) >0 )
3 wade25
 
12.12.11
13:28
Ну или выбор когда склад = такой то, то выбираем >0, иначе все...