Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 50 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 190338 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #30 - 13. Октября 2010 :: 10:32
Печать  
Я думаю при влюченном логировании, хотя дополнительные "ЕСЛИ Лог = 1 ТОГДА" не знаю как в целом отразятся. Будет их не много, но будут Улыбка
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Amel
Junior Member
**
Отсутствует


1С++ rulezzz!

Сообщений: 85
Местоположение: Украина, Винница
Зарегистрирован: 20. Ноября 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #31 - 15. Октября 2010 :: 10:00
Печать  
Не могу никак составить элементарный прямой запрос типа:
ВЫБРАТЬ БИ.Субконто1, БИ.Субконто2, БИ.СуммаОборот
ИЗ $БИОборотыДтКт.Основной(:Дата1, :Дата2, МЕСЯЦ, #Счета,БЕЗСУБКОНТО,#Счета, (Субконто1,Субконто2), (Сумма), ((Субконто1 IN (SELECT Val FROM #ВыбПодр)) AND (Субконто2 IN (SELECT Val FROM #Статьи)))) КАК БИ";

Подскажите, что не так?
Я уже пробовал и имена этих видов субконто писать, и "безсубконто" не писать, и СубконтоКт1 где ни попадя...

Версии всего вроде последние. При том запросе, что я привел в условиях отбора получается такая фигня:

           AND (entry_vt.PROVKIND = ' ')
           AND ((( IN (SELECT Val FROM #ВыбПодр)) AND ( IN (SELECT Val FROM #Статьи))))

Т.е. теряет "Субконто1". Если в условия пишу СубконтоКт1, то условие такое:

           AND (entry_vt.PROVKIND = ' ')
           AND (((entry_vt.KTSC0 IN (SELECT Val FROM #ВыбПодр)) AND ( IN (SELECT Val FROM #Статьи))))

Извините, уже разобрался сам
  

Восторгаюсь 1С++ и классами к ней!
Наверх
ICQ  
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #32 - 25. Октября 2010 :: 20:48
Печать  
Всем доброй ночи, кто не спит! Улыбка

Запрос:

глТекст = "
|SELECT";
Если флВывПоТоварам = 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";
Если флВывПоТоварам = 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.696
ВозвКол: 0
ОтказКол: 89.33
БракКол: 0
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #33 - 25. Октября 2010 :: 20:52
Печать  
А вот следующий запрос:

глТекст = "
|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

Неважно, что поле ПродКол не округлено. Здесь только добавил вывод документа и кода операции документа с включением этих полей в группировку. В итоге получил правильные данные! В первом запросе поле ВозвКол почему-то пустое, а его результат сложился с полем ОтказКол. Что может быть не так?
« Последняя редакция: 26. Октября 2010 :: 05:33 - ReLock »  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #34 - 26. Октября 2010 :: 05:12
Печать  
Озадачен ты бы хотяб выделил маркером что добавил  Ужас
  
Наверх
wwwICQ  
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #35 - 26. Октября 2010 :: 05:34
Печать  
Anatol писал(а) 26. Октября 2010 :: 05:12:
Озадачен ты бы хотяб выделил маркером что добавил  Ужас

Ну я вообще-то словами описал... Но еще выделил жирным куски текста, которые добавил.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3042
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #36 - 26. Октября 2010 :: 06:06
Печать  
непонятно как работал запрос из #32
если по Ш.КодОперации нет ни группировки ни агрегирования
Озадачен
  

1&&2&&3
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #37 - 26. Октября 2010 :: 06:33
Печать  
trad писал(а) 26. Октября 2010 :: 06:06:
непонятно как работал запрос из #32
если по Ш.КодОперации нет ни группировки ни агрегирования
Озадачен

Вообще мне в запросе ни группировки, ни агреагирование по полю Ш.КодОперации вообще не нужно. Во втором запросе я это ввел, чтобы посмотреть, по каким документам и операциям какие проходят суммы. Как раз второй запрос мне и показал, что был один документ на сумму 6.76 с признаком "ВозвратОтПокупателя".
Если я просто делаю группировку только! по товару, данная сумма почему-то падает в колонку ОтказКол, где суммируются суммы документов с признаком "ОтказОтПокупателя". И очень бы хотелось выяснить, по какой причине это происходит. Просто получается ситуация, что запрос по продажам с детализацией по документам показывает правильные данные, а без детализации - врет!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3042
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #38 - 26. Октября 2010 :: 07:14
Печать  
Все равно не понятно как проходит проверку синтаксиса первый запрос. Там явная ошибка.

Надо так:
|,      SUM(CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN Т.Количество ELSE 0 END) ПродКол
  

1&&2&&3
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #39 - 26. Октября 2010 :: 07:30
Печать  
trad писал(а) 26. Октября 2010 :: 07:14:
Все равно не понятно как проходит проверку синтаксиса первый запрос. Там явная ошибка.

Надо так:
|,      SUM(CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN Т.Количество ELSE 0 END) ПродКол

С чего же там ошибка???

Запрос (вывел текст запроса через <Сообщить>):
Цитата:
SELECT
           Т.Номенклатура as [Товар $Справочник.Номенклатура]
,      (CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN (SUM(Т.Количество)) ELSE 0.00 END) ПродКол
,      (CASE WHEN Ш.КодОперации = :ВозвратОтПокупателя THEN (SUM(Т.Количество)) ELSE 0.00 END) ВозвКол
,      (CASE WHEN Ш.КодОперации = :ОтказОтПокупателя THEN (SUM(Т.Количество)) ELSE 0.00 END) ОтказКол
,      (CASE WHEN Ш.КодОперации = :ВозвратРазбраковка THEN (SUM(Т.Количество)) ELSE 0.00 END) БракКол
FROM
           ЖурналДокументов as Ж $NOLOCK
INNER JOIN
           Документ.Реализация as Ш $NOLOCK ON $Ж.ТекущийДокумент = $Ш.ТекущийДокумент
INNER JOIN
           ДокументСтроки.Реализация as Т $NOLOCK ON $Ш.ТекущийДокумент = $Т.ТекущийДокумент
WHERE
           $Ж.Проведен & 1 = 1 AND $Ж.ДатаДокумента BETWEEN :Дата01 AND :Дата02~
GROUP BY
           Т.Номенклатура


UNION ALL


SELECT
           Т.Номенклатура as [Товар $Справочник.Номенклатура]
,      (CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN (SUM(Т.Количество)) ELSE 0.00 END) ПродКол
,      (CASE WHEN Ш.КодОперации = :ВозвратОтПокупателя THEN (SUM(Т.Количество)) ELSE 0.00 END) ВозвКол
,      (CASE WHEN Ш.КодОперации = :ОтказОтПокупателя THEN (SUM(Т.Количество)) ELSE 0.00 END) ОтказКол
,      (CASE WHEN Ш.КодОперации = :ВозвратРазбраковка THEN (SUM(Т.Количество)) ELSE 0.00 END) БракКол
FROM
           ЖурналДокументов as Ж $NOLOCK
INNER JOIN
           Документ.ВозвратОтПокупателя as Ш $NOLOCK ON $Ж.ТекущийДокумент = $Ш.ТекущийДокумент
INNER JOIN
           ДокументСтроки.ВозвратОтПокупателя as Т $NOLOCK ON $Ш.ТекущийДокумент = $Т.ТекущийДокумент
WHERE
           $Ж.Проведен & 1 = 1 AND $Ж.ДатаДокумента BETWEEN :Дата01 AND :Дата02~
GROUP BY
           Т.Номенклатура


Режим отладки:
Цитата:
SELECT
           Т.Номенклатура as [Товар $Справочник.Номенклатура]
,      (CASE WHEN Ш.КодОперации = '   16S   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) ПродКол
,      (CASE WHEN Ш.КодОперации = '   15O   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) ВозвКол
,      (CASE WHEN Ш.КодОперации = '   5Z0   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) ОтказКол
,      (CASE WHEN Ш.КодОперации = '   61S   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) БракКол
FROM
           [Журнал] as Ж
INNER JOIN
           [Документ.Реализация] as Ш  ON Ж.IDDOC = Ш.IDDOC
INNER JOIN
           [ДокументСтроки.Реализация] as Т  ON Ш.IDDOC = Т.IDDOC
WHERE
           Ж.CLOSED&1 & 1 = 1 AND Ж.DATE BETWEEN '20100901' AND '20100930Я'
GROUP BY
           Т.Номенклатура


UNION ALL


SELECT
           Т.Номенклатура as [Товар $Справочник.Номенклатура]
,      (CASE WHEN Ш.КодОперации = '   16S   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) ПродКол
,      (CASE WHEN Ш.КодОперации = '   15O   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) ВозвКол
,      (CASE WHEN Ш.КодОперации = '   5Z0   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) ОтказКол
,      (CASE WHEN Ш.КодОперации = '   61S   ' THEN (SUM(Т.Количество)) ELSE 0.00 END) БракКол
FROM
           [Журнал] as Ж
INNER JOIN
           [Документ.ВозвратОтПокупателя] as Ш  ON Ж.IDDOC = Ш.IDDOC
INNER JOIN
           [ДокументСтроки.ВозвратОтПокупателя] as Т  ON Ш.IDDOC = Т.IDDOC
WHERE
           Ж.CLOSED&1 & 1 = 1 AND Ж.DATE BETWEEN '20100901' AND '20100930Я'
GROUP BY
           Т.Номенклатура
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #40 - 26. Октября 2010 :: 07:34
Печать  
trad писал(а) 26. Октября 2010 :: 07:14:
Все равно не понятно как проходит проверку синтаксиса первый запрос. Там явная ошибка.

Надо так:
|,      SUM(CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN Т.Количество ELSE 0 END) ПродКол

Хотя мысль уловил! Щас попробую! Может действительно в этом ошибка!  Улыбка
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #41 - 26. Октября 2010 :: 07:44
Печать  
trad писал(а) 26. Октября 2010 :: 07:14:
Все равно не понятно как проходит проверку синтаксиса первый запрос. Там явная ошибка.

Надо так:
|,      SUM(CASE WHEN Ш.КодОперации = :ПродажаПокупателю THEN Т.Количество ELSE 0 END) ПродКол

Огромное спасибо за помощь! Все получилось. Очень довольный
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3042
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #42 - 26. Октября 2010 :: 08:06
Печать  
ReLock писал(а) 26. Октября 2010 :: 07:30:
С чего же там ошибка???

Цитата:
по Ш.КодОперации нет ни группировки ни агрегирования
при наличии group by
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3042
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #43 - 26. Октября 2010 :: 08:19
Печать  
Все понятно. это парсер sqlite не просёк нарушение семантики sql.
Фигня этот ваш sqlite. Подмигивание
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #44 - 26. Октября 2010 :: 09:20
Печать  
trad писал(а) 26. Октября 2010 :: 08:19:
Все понятно. это парсер sqlite не просёк нарушение семантики sql.
Фигня этот ваш sqlite. Подмигивание

А мне наоборот стало как-то комфортнее с sqlite. Не надо указывать MIN/MAX в полях, где по группировке будет одно значение.
А то что автор забыл поставить SUM - это, как мне кажется, проблемы автора. Такие ошибки можно и в программе допустить и не заметить.  Подмигивание
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 50
ОтправитьПечать