А вот следующий запрос: глТекст = " |SELECT | $Ж.ТекущийДокумент as [Док $Документ.Реализация] |, $Ш.КодОперации as [КодОперации $Перечисление.КодыОпераций]"; Если флВывПоТоварам = 0 Тогда глТекст = глТекст + " | Ш.Контрагент as [Клиент $Справочник.Контрагенты] |, Ш.ТоргТочка as [ТоргТочка $Справочник.ТорговыеТочки], "; КонецЕсли; глТекст = глТекст + " |, Т.Номенклатура as [Товар $Справочник.Номенклатура]"; Если ВыводитьСуммы = 0 Тогда глТекст = глТекст + " |, (CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN (SUM(Т.Количество)) ELSE 0 END) ПродКол |, (CASE WHEN Ш.КодОперации = :ВозвратОтПокупателя THEN (SUM(Т.Количество)) ELSE 0 END) ВозвКол |, (CASE WHEN Ш.КодОперации = :ОтказОтПокупателя THEN (SUM(Т.Количество)) ELSE 0 END) ОтказКол |, (CASE WHEN Ш.КодОперации = :ВозвратРазбраковка THEN (SUM(Т.Количество)) ELSE 0 END) БракКол"; Иначе глТекст = глТекст + " |, (CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN (SUM(Т.Сумма)) ELSE 0 END) ПродКол |, (CASE WHEN Ш.КодОперации = :ВозвратОтПокупателя THEN (SUM(Т.Сумма)) ELSE 0 END) ВозвКол |, (CASE WHEN Ш.КодОперации = :ОтказОтПокупателя THEN (SUM(Т.Сумма)) ELSE 0 END) ОтказКол |, (CASE WHEN Ш.КодОперации = :ВозвратРазбраковка THEN (SUM(Т.Сумма)) ELSE 0 END) БракКол"; КонецЕсли; глТекст = глТекст + " |FROM | ЖурналДокументов as Ж $NOLOCK |INNER JOIN | Документ.Реализация as Ш $NOLOCK ON $Ж.ТекущийДокумент = $Ш.ТекущийДокумент |INNER JOIN | ДокументСтроки.Реализация as Т $NOLOCK ON $Ш.ТекущийДокумент = $Т.ТекущийДокумент |WHERE | $Ж.Проведен & 1 = 1 AND $Ж.ДатаДокумента BETWEEN :Дата01 AND :Дата02~"+?(ПустаяСтрока(Условие)=0," "+Условие,"") +?(флИсклТару=1," "+УсловиеПоТаре,"")+" |GROUP BY | $Ж.ТекущийДокумент,$Ш.КодОперации"+?(флВывПоТоварам=0,",Ш.Контрагент, Ш.ТоргТочка","")+",Т.Номенклатура | | |UNION ALL | | |SELECT | $Ж.ТекущийДокумент as [Док $Документ.ВозвратОтПокупателя] |, $Ш.КодОперации as [КодОперации $Перечисление.КодыОпераций]"; Если флВывПоТоварам = 0 Тогда глТекст = глТекст + " | Ш.Контрагент as [Клиент $Справочник.Контрагенты] |, Ш.ТоргТочка as [ТоргТочка $Справочник.ТорговыеТочки], "; КонецЕсли; глТекст = глТекст + " |, Т.Номенклатура as [Товар $Справочник.Номенклатура]"; Если ВыводитьСуммы = 0 Тогда глТекст = глТекст + " |, (CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN (SUM(Т.Количество)) ELSE 0 END) ПродКол |, (CASE WHEN Ш.КодОперации = :ВозвратОтПокупателя THEN (SUM(Т.Количество)) ELSE 0 END) ВозвКол |, (CASE WHEN Ш.КодОперации = :ОтказОтПокупателя THEN (SUM(Т.Количество)) ELSE 0 END) ОтказКол |, (CASE WHEN Ш.КодОперации = :ВозвратРазбраковка THEN (SUM(Т.Количество)) ELSE 0 END) БракКол"; Иначе глТекст = глТекст + " |, (CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN (SUM(Т.Сумма)) ELSE 0 END) ПродКол |, (CASE WHEN Ш.КодОперации = :ВозвратОтПокупателя THEN (SUM(Т.Сумма)) ELSE 0 END) ВозвКол |, (CASE WHEN Ш.КодОперации = :ОтказОтПокупателя THEN (SUM(Т.Сумма)) ELSE 0 END) ОтказКол |, (CASE WHEN Ш.КодОперации = :ВозвратРазбраковка THEN (SUM(Т.Сумма)) ELSE 0 END) БракКол"; КонецЕсли; глТекст = глТекст + " |FROM | ЖурналДокументов as Ж $NOLOCK |INNER JOIN | Документ.ВозвратОтПокупателя as Ш $NOLOCK ON $Ж.ТекущийДокумент = $Ш.ТекущийДокумент |INNER JOIN | ДокументСтроки.ВозвратОтПокупателя as Т $NOLOCK ON $Ш.ТекущийДокумент = $Т.ТекущийДокумент |WHERE | $Ж.Проведен & 1 = 1 AND $Ж.ДатаДокумента BETWEEN :Дата01 AND :Дата02~"+?(ПустаяСтрока(Условие)=0," "+Условие,"") +?(флИсклТару=1," "+УсловиеПоТаре,"")+" |GROUP BY | $Ж.ТекущийДокумент,$Ш.КодОперации"+?(флВывПоТоварам=0,",Ш.Контрагент, Ш.ТоргТочка","")+",Т.Номенклатура |";
Дает следующий результат: Цитата:ПродКол: 345.69599999999989 ВозвКол: 6.76 ОтказКол: 82.57 БракКол: 0 Неважно, что поле ПродКол не округлено. Здесь только добавил вывод документа и кода операции документа с включением этих полей в группировку. В итоге получил правильные данные! В первом запросе поле ВозвКол почему-то пустое, а его результат сложился с полем ОтказКол. Что может быть не так?
|