ТекстЗапроса = " |Select | ИтЗапрос.ДокРеал [ДокОтгрузки $Документ.Реализация] |,ИтЗапрос.Контрагент [Контрагент $Справочник.Контрагенты] |,ИтЗапрос.ФактДата as ФактДата |,ИтЗапрос.НомерДок as НомерДок |,ИтЗапрос.ДатаДок as ДатаДок |,ИтЗапрос.Позиция as Позиция |,SUM(ИтЗапрос.Вес) as Вес |,SUM(ИтЗапрос.Объем) as Объем |,SUM(ИтЗапрос.Продстоимость) as ПродСтоимость |,SUM(ИтЗапрос.ПродСтоимостьБезНДС) as ПродСтоимостьБезНДС |,SUM(ИтЗапрос.СуммаПокупки) as СуммаПокупки |,SUM(ИтЗапрос.СуммаПокупкиБезНДС) as СуммаПокупкиБезНДС |,SUM(ИтЗапрос.ПродСтоимость-ИтЗапрос.СуммаПокупки) as Профит |From |( |Select | РегПарт.IDDOC ДокРеал |,$РегПарт.Номенклатура Номенклатура |,$ДокРеализации.Контрагент Контрагент |,$ДокРеализации.ПервоначальнаяДата as ФактДата |,CAST(LEFT(Журн.Date_Time_Iddoc,8) as DateTime) as ДатаДок |,Журн.Date_Time_IdDoc as Позиция |,Журн.DOCNO as НомерДок |,ROUND($БазоваяЕдиница.Вес*$РегПарт.Количество/1000,3,1) as Вес |,$БазоваяЕдиница.Объем*$РегПарт.Количество as Объем |,$РегПарт.ПродСтоимость as ПродСтоимость |,$РегПарт.ПродСтоимость - $ДокРеализацииТч.СуммаНДС as ПродСтоимостьБезНДС |"; Если ПустоеЗначение(ВыбТипЦеныСебестоимость)=1 Тогда ТекстЗапроса = ТекстЗапроса+" |,$РегПарт.СуммаРуб as СуммаПокупки |,$РегПарт.СуммаБезНДС as СуммаПокупкиБезНДС |"; Иначе ТекстЗапроса = ТекстЗапроса+" |,$РегПарт.Количество*ISNULL($ПоследнееЗначение.Цены.Цена(СпрЦ.ID, CAST(LEFT(Журн.Date_Time_Iddoc,8) as DateTime)),0) as СуммаПокупки |,0 as СуммаПокупкиБезНДС |"; КонецЕсли; Если флОтборПроцент = 1 Тогда ТекстЗапроса = ТекстЗапроса+" |,CASE When $РегПарт.СуммаРуб<>0 Then ROUND(($РегПарт.ПродСтоимость-$РегПарт.СуммаРуб)/$РегПарт.СуммаРуб*100,2,1) Else 100 END as ПроцентПрофита |"; КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |From |$Регистр.ПартииНаличие as РегПарт (NOLOCK) |INNER JOIN |$Документ.Реализация as ДокРеализации (NOLOCK) ON (ДокРеализации.IDDOC = РегПарт.IDDOC) |"; Если ПустоеЗначение(ВыбСклад)=0 Тогда ТекстЗапроса = ТекстЗапроса+" |AND ($ДокРеализации.Склад = :ВыбСклад)"; Запрос.УстановитьТекстовыйПараметр("ВыбСклад",ВыбСклад); КонецЕсли; Если ПустоеЗначение(ВыбТипЦены)=0 Тогда ТекстЗапроса = ТекстЗапроса+" |AND ($ДокРеализации.ТипЦен = :ВыбТипЦен)"; Запрос.УстановитьТекстовыйПараметр("ВыбТипЦен",ВыбТипЦены); КонецЕсли; Если ПустоеЗначение(ВыбМенеджер)=0 Тогда Если ВыбМенеджер.ЭтоГруппа()=1 Тогда ТекстЗапроса = ТекстЗапроса+" |AND ($ДокРеализации.Менеджер in (Select Val From #Менеджеры))"; Запрос.УложитьСписокОбъектов(ВыбМенеджер,"#Менеджеры","Менеджеры"); Иначе ТекстЗапроса = ТекстЗапроса+" |AND ($ДокРеализации.Менеджер = :ВыбМенеджер)"; Запрос.УстановитьТекстовыйПараметр("ВыбМенеджер",ВыбМенеджер); КонецЕсли; КонецЕсли; Если ПустоеЗначение(ВыбПокупатель)=0 Тогда Если ВыбПокупатель.ЭтоГруппа()=1 Тогда ТекстЗапроса = ТекстЗапроса+" |AND ($ДокРеализации.Контрагент in (Select Val From #Контрагенты))"; Запрос.УложитьСписокОбъектов(ВыбПокупатель,"#Контрагенты","Контрагенты"); Иначе ТекстЗапроса = ТекстЗапроса+" |AND ($ДокРеализации.Контрагент = :ВыбКонтрагент)"; Запрос.УстановитьТекстовыйПараметр("ВыбКонтрагент",ВыбПокупатель); КонецЕсли; КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |INNER JOIN |$ДокументСтроки.Реализация as ДокРеализацииТч (NOLOCK) ON (ДокРеализацииТч.LINENO_ = РегПарт.LINENO_) |and (ДокРеализацииТч.IDDOC = РегПарт.IDDOC) and ($ДокРеализацииТч.Номенклатура = $РегПарт.Номенклатура) |INNER JOIN |_1sjourn as Журн (NOLOCK) ON (Журн.IDDOC = РегПарт.IDDOC) and (Журн.Date_Time_Iddoc BETWEEN :НачДата and :КонДата~) |"; Если ФлагРеализации>1 Тогда Если ФлагРеализации=2 Тогда фл = "0"; Иначе фл = "Ф"; КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |AND (LEFT(Журн.DOCNO,1)=:фНомер)"; Запрос.УстановитьТекстовыйПараметр("фНомер",фл); КонецЕсли; Если ПустоеЗначение(ВыбФирма)=0 Тогда ТекстЗапроса = ТекстЗапроса+" |and (Журн.$ОбщийРеквизит.Фирма = :ВыбФирма)"; Запрос.УстановитьТекстовыйПараметр("ВыбФирма",ВыбФирма); КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |INNER JOIN |$Справочник.Номенклатура as СпрНом (NOLOCK) ON (СпрНом.ID = $РегПарт.Номенклатура) |"; Если ПустоеЗначение(ВыбГруппа)=0 Тогда Если ВыбГруппа.ЭтоГруппа()=1 Тогда ТекстЗапроса = ТекстЗапроса+" |AND (СпрНом.ID in (Select Val From #ВыбГруппа))"; Запрос.УложитьСписокОбъектов(ВыбГруппа,"#ВыбГруппа","Номенклатура"); Иначе ТекстЗапроса = ТекстЗапроса+" |AND (СпрНом.ID = :ВыбГруппа)"; Запрос.УстановитьТекстовыйПараметр("ВыбГруппа",ВыбГруппа); КонецЕсли; КонецЕсли; Если ПустоеЗначение(ВыбТипЦеныСебестоимость)=0 Тогда ТекстЗапроса = ТекстЗапроса+" |LEFT JOIN | $Справочник.Цены as СпрЦ (NOLOCK) ON СпрЦ.ParentExt = $РегПарт.Номенклатура AND | $СпрЦ.ТипЦен = :ВыбТипЦенСебестоимость"; Запрос.УстановитьТекстовыйПараметр("ВыбТипЦенСебестоимость",ВыбТипЦеныСебестоимость); КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |LEFT JOIN |$Справочник.Единицы as БазоваяЕдиница (NOLOCK) ON (БазоваяЕдиница.ID = $СпрНом.БазоваяЕдиница) |"; Если флОтборПроцент = 1 Тогда ТекстЗапроса = ТекстЗапроса+" |Where (CASE When $РегПарт.СуммаРуб<>0 Then ROUND(($РегПарт.ПродСтоимость-$РегПарт.СуммаРуб)/$РегПарт.СуммаРуб*100,2,1) Else 100 END"+СзСравнений.ПолучитьЗначение(СзСравнений.ТекущаяСтрока())+":ВыбПроцент) |"; Запрос.УстановитьТекстовыйПараметр("ВыбПроцент",ВыбПроцент); Если флДопОтбор = 1 Тогда ТекстЗапроса = ТекстЗапроса+" |AND (CASE When $РегПарт.СуммаРуб<>0 Then ROUND(($РегПарт.ПродСтоимость-$РегПарт.СуммаРуб)/$РегПарт.СуммаРуб*100,2,1) Else 100 END"+СзДопСравнений.ПолучитьЗначение(СзДопСравнений.ТекущаяСтрока())+":ВыбДопПроцент) |"; Запрос.УстановитьТекстовыйПараметр("ВыбДопПроцент",ВыбДопПроцент); КонецЕсли; КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |) as ИтЗапрос |GROUP BY |ИтЗапрос.ДокРеал, ИтЗапрос.Контрагент, ИтЗапрос.ФактДата, ИтЗапрос.ДатаДок, ИтЗапрос.НомерДок, ИтЗапрос.Позиция |ORDER BY ИтЗапрос.ДатаДок, ИтЗапрос.НомерДок //|Order By ИтЗапрос.Позиция |";