Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Без родителей (число прочтений - 1000 )
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Без родителей
06. Мая 2008 :: 02:19
Печать  
Есть работающий запрос, но проблема в том, что когда не выбраны ВыбТовар и ВыбТоварСписок (т.е. запрос по всем товарам) в запрос не попадают товары первого уровня, лежащие вне групп, а нужно чтобы попадали....
По идее нужно добавить (Спр.PARENTID ='     0   '), вопрос как и куда  Смущённый

     
       РС = СоздатьОбъект("ODBCRecordSet");
     ТекстЗапроса = "          
     
     |SELECT
     
     |  Спр.Code as Код,   
     
     |  ТовРодитель.Code as КодРод,

     |  ТовРодитель.Descr as ИмяРод,

     |  Рег.Номенклатура as [Товар $Справочник.Номенклатура],
     
     |  Рег.МестоХранения as [Склад $Справочник.МестаХранения],   
     
     |  Рег.Фирма as [Фирма $Справочник.Фирмы],   
     
     |  $СпрЦ.Цена as Цена,
        
     |  Рег.КоличествоОстаток as КонОст
     
     |FROM
     
     | о)) as Рег
     
     | INNER JOIN
     
     | $Справочник.Номенклатура as Спр ON Спр.ID = Рег.Номенклатура 
     
     | INNER JOIN
     
     | $Справочник.МестаХранения as Скл ON Скл.ID = Рег.МестоХранения
     
     | INNER JOIN
     
     | $Справочник.Фирмы as Фрм ON Фрм.ID = Рег.Фирма
     
     |LEFT JOIN
     
     | $Справочник.Цены as СпрЦ ON СпрЦ.ParentExt = Спр.ID AND
     
     | $СпрЦ.КатегорияЦен = :ТипЦен      

     | INNER JOIN

     | $Справочник.Номенклатура as ТовРодитель  ON ТовРодитель.ID = Спр.ParentID
     
     |WHERE   
           
     | 1=1
     
     |";
     
     Если ВыбТоварСписок.РазмерСписка()<>0 Тогда
           ТекстЗапроса = ТекстЗапроса + "      AND      
           |  Спр.ID IN (SELECT Val FROM #ГруппаТ)";
     ИначеЕсли ВыбТовар.Выбран()=1 Тогда
           ТекстЗапроса = ТекстЗапроса + " AND
           |  Спр.ID IN (SELECT Val FROM #ВыбТовар)";
     КонецЕсли;   
     
     Если ВыбФирмаСписок.РазмерСписка()<>0 Тогда
           ТекстЗапроса = ТекстЗапроса + " AND
           |  Фрм.ID IN (SELECT Val FROM #ГруппаФ)";
     ИначеЕсли ВыбФирма.Выбран()=1 Тогда
           ТекстЗапроса = ТекстЗапроса + " AND
           |  Фрм.ID IN (SELECT Val FROM #ВыбФирма)";
     КонецЕсли;       
     
     
     Если ВыбСкладСписок.РазмерСписка()<>0 Тогда
           ТекстЗапроса = ТекстЗапроса + " AND
           |  Скл.ID IN (SELECT Val FROM #ГруппаС)";
     ИначеЕсли ВыбСклад.Выбран()=1 Тогда
           ТекстЗапроса = ТекстЗапроса + " AND
           |  Скл.ID IN (SELECT Val FROM #ВыбСклад)";
     КонецЕсли;       
     
     ТекстЗапроса = ТекстЗапроса + "
     |ORDER BY
     
     |  Спр.Code, Спр.Descr
     
     |";
     
           
     РС.УстановитьТекстовыйПараметр("КонДата", ДатаОтчета);
     РС.УстановитьТекстовыйПараметр("ТипЦен", глПользователь.ОсновнойТипЦенПродажи);
     РС.УложитьСписокОбъектов(ВыбТовар,"#ВыбТовар","Номенклатура" );
     РС.УложитьСписокОбъектов(ВыбТоварСписок, "#ГруппаТ", "Номенклатура");      
     РС.УложитьСписокОбъектов(ВыбСклад,"#ВыбСклад","МестаХранения" );
     РС.УложитьСписокОбъектов(ВыбСкладСписок, "#ГруппаС", "МестаХранения");
     РС.УложитьСписокОбъектов(ВыбФирма,"#ВыбФирма","Фирмы" );
     РС.УложитьСписокОбъектов(ВыбФирмаСписок, "#ГруппаФ", "Фирмы");
     
     ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
  
Наверх
 
IP записан
 
FAM
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 19. Мая 2006
Re: Без родителей
Ответ #1 - 06. Мая 2008 :: 02:40
Печать  
| INNER JOIN 
| $Справочник.Номенклатура as ТовРодитель  ON ТовРодитель.ID = Спр.ParentID

Заменить на

| LEFT JOIN 
| $Справочник.Номенклатура as ТовРодитель  ON ТовРодитель.ID = Спр.ParentID
  
Наверх
 
IP записан
 
boks
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 39
Зарегистрирован: 24. Октября 2007
Re: Без родителей
Ответ #2 - 06. Мая 2008 :: 02:49
Печать  
Ура! Работает!
Огромное спасибо!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать