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


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
трудности с условием в запросе
25. Сентября 2014 :: 02:41
Печать  
есть запрос:
     ТекстЗапроса="select
           |Рег.Товар [Номенклатура $Справочник.Номенклатура],
           |sum(Рег.Количество) as КонОст,
           |sum(Рег.Расход) as Отгружено
           |from
           |      (select
           |            $Итоги.Номенклатура Товар,
           |            $Итоги.КоличествоРасход Количество,
           |            0 Расход
           |      from $РегистрИтоги.Заявки Итоги
           |      where Итоги.period=:ПредПериод
           |      union all
           |      select
           |            $Движения.Номенклатура,
           |            $Движения.КоличествоРасход*(1-Движения.debkred*2),
           |            $Движения.КоличествоРасход*Движения.debkred
           |      from $Регистр.Заявки Движения
           |      where Движения.date_time_iddoc BETWEEN :НачПериод And :КонПериод
           |      ) as Рег
           |group by
           |      Рег.Товар";

так вот, переменную "Отгружено" надо получать с наложением условия:
....
|Функция Отгружено = Расход(КоличествоРасход) <>""СнятиеРезерва""));
где Док - документ двинувший регистр...
как наложить такое условие в прямом запросе? При этом переменная "КонОст" должна быть получена БЕЗ условия по видам докмуентов...
Возможно ли такое в одном запросе? Может быть надо объединять два запроса: один для получения КонОст, а второй для получения "Отгружено" с условием?
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 278
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: трудности с условием в запросе
Ответ #1 - 25. Сентября 2014 :: 04:30
Печать  
В подзапросе получаем значение "Отгружена" так
Код
Выбрать все
case Движения.iddocdef -- возможно iddocdef придётся вытащит из _1sjourn
when $ВидДокумента.ЗаявкаПокупателя then 0
when $ВидДокумента.ОтменаЗаявок then 0
when $ВидДокумента.СнятиеРезерваthen 0
else 1
end as Отгружена 


ну и в верхнем запросе sum тоже заворачиваем в case
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: трудности с условием в запросе
Ответ #2 - 25. Сентября 2014 :: 05:02
Печать  
спасибо, попробую
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: трудности с условием в запросе
Ответ #3 - 25. Сентября 2014 :: 05:10
Печать  
я бы сделал в запросе по движениям так

case Движения.iddocdef -- iddocdef есть, т.к. есть date_time_iddoc
when $ВидДокумента.ЗаявкаПокупателя then 0
when $ВидДокумента.ОтменаЗаявок then 0
when $ВидДокумента.СнятиеРезерваthen 0
else $Движения.КоличествоРасход*Движения.debkred
end as Расход

и все
  

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


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: трудности с условием в запросе
Ответ #4 - 25. Сентября 2014 :: 05:37
Печать  
и вам спасибо Улыбка
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать