SELECT Номенклатура.ID as [Товар $Справочник.Номенклатура] , Номенклатура.IsMark as IsMark , Номенклатура.IsFolder as IsFolder , Номенклатура.PARENTID as [Родитель $Справочник.Номенклатура] , (CASE WHEN (Номенклатура.ID = ' 2TM ') THEN '2' WHEN (Номенклатура.ID = ' 3S ') THEN '1' WHEN (Номенклатура.ID = ' 0 ') THEN '0' ELSE '10' END) as Уровень , Номенклатура.CODE as Код , Номенклатура.DESCR as Наименование , $Номенклатура.Артикул as Артикул , $Номенклатура.ОригинальныйНомер as [ОЕ $Справочник.OE_Номера] , $Номенклатура.БазоваяЕдиницаИзмерения as [ЕдИзм $Перечисление.ЕдиницыИзмерения] , Номенклатура.ID as ИД , (ПартииТоваровОстатки.ОстатокТовараОстаток - IsNull(РезервыТоваровОстатки.РезервТовараОстаток, 0)) as Остаток , (РезервыТоваровОстатки.РезервТовараОстаток) as Резерв FROM $Справочник.Номенклатура AS Номенклатура LEFT OUTER JOIN $РегистрОстатки.ПартииТоваров(, RIGHT OUTER JOIN $Справочник.Номенклатура AS Номенклатура ON Номенклатура.ID = Товар,(Склад = :ВыбСклад) AND (Фирма = :ВыбФирма),(Фирма, Товар, Склад),) AS ПартииТоваровОстатки ON Номенклатура.ID = ПартииТоваровОстатки.Товар LEFT OUTER JOIN $РегистрОстатки.РезервыТоваров(, RIGHT OUTER JOIN $Справочник.Номенклатура AS Номенклатура ON Номенклатура.ID = Товар,, (Фирма, Товар, Склад),) AS РезервыТоваровОстатки ON Номенклатура.ID = РезервыТоваровОстатки.Товар AND ПартииТоваровОстатки.Фирма = РезервыТоваровОстатки.Фирма AND ПартииТоваровОстатки.Склад = РезервыТоваровОстатки.Склад WHERE (($Номенклатура.Фирма = :ВыбФирма) OR ($Номенклатура.Фирма = $ПустойИд)) AND (((ПартииТоваровОстатки.ОстатокТовараОстаток - IsNull(РезервыТоваровОстатки.РезервТовараОстаток, 0)) <> 0) OR (Номенклатура.IsFolder = 1)) AND ((Номенклатура.PARENTID = :ТекРодитель) OR Номенклатура.ID IN (' 2TM ' , ' 3S ' , ' 0 '))
Так я строил часть текста запроса
WHERE = WHERE + "((Номенклатура.PARENTID = :ТекРодитель) OR "; МД = СоздатьОбъект("MetaDataWork"); УсловиеГрупп = "Номенклатура.ID IN ('" + МД.ЗначениеВСтрокуБД(ТекРодитель) + "'"; УровниГрупп = "WHEN (Номенклатура.ID = '" + МД.ЗначениеВСтрокуБД(ТекРодитель) + "') THEN '" + (ТекРодитель.Уровень()) + "'"; ВремРодитель = ТекРодитель; Для А = 1 По ТекРодитель.Уровень() Цикл ВремРодитель = ВремРодитель.Родитель; УровниГрупп = УровниГрупп + " |WHEN (Номенклатура.ID = '" + МД.ЗначениеВСтрокуБД(ВремРодитель) + "') THEN '" + ВремРодитель.Уровень() + "'"; УсловиеГрупп = УсловиеГрупп + " , '" + МД.ЗначениеВСтрокуБД(ВремРодитель) + "'"; КонецЦикла; УсловиеГрупп = УсловиеГрупп + ")"; WHERE = WHERE + УсловиеГрупп + ")";
|