Имя: Пароль:
1C
1C 7.7
v7: Нужна помощь с запросом
,
0 zenon46
 
24.12.19
19:08
Есть запрос,который подсчитывает количество дней в периоде когда товар был на складе, но вот есть одно НО, когда товар пришел и ушел в тот же день, в результате получаем 0, что не совсем верно, где ошибка ?
            |SELECT
            |    SUM(
            |    CASE WHEN ВлЗапрос.НачОст>0 THEN  
            |        CASE WHEN ВлЗапрос.Период=convert(datetime,:НачДата,112) THEN
            |                                     CASE WHEN ВлЗапрос.КонОст<=0 THEN  
            |                1
            |            ELSE
            |                DATEDIFF(day, ВлЗапрос.Период,convert(datetime,:КонДата,112)) + 1
            |            END
            |        ELSE
            |                 CASE WHEN ВлЗапрос.КонОст<=0 THEN
            |                -DATEDIFF(day, ВлЗапрос.Период,convert(datetime,:КонДата,112))
            |            END
            |        END                
            |    ELSE
            |        CASE WHEN ВлЗапрос.КонОст>0 THEN
            |            DATEDIFF(day, ВлЗапрос.Период,convert(datetime,:КонДата,112)) + 1
            |        END
            |    END) as ДнейНаСкладе
            |FROM(
            |    SELECT ОстаткиТМЦОстаткиОбороты.Фирма
            |        , ОстаткиТМЦОстаткиОбороты.Номенклатура      
            |        , ОстаткиТМЦОстаткиОбороты.Период as Период
            |        , ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток КонОст
            |        , ОстаткиТМЦОстаткиОбороты.КоличествоНачальныйОстаток НачОст
            |    FROM  $РегистрОстаткиОбороты.ОстаткиТМЦ(:НачДата,:КонДата~,День,ДвиженияИГраницыПериода,
            |          ,(Фирма = :ВбрФирма)  AND (Номенклатура = :ВбрТовар)
            |          ,(Номенклатура, Фирма),) AS ОстаткиТМЦОстаткиОбороты
            |    ) AS ВлЗапрос          
            |    GROUP BY ВлЗапрос.Фирма
            |        , ВлЗапрос.Номенклатура
            |    ORDER BY ВлЗапрос.Номенклатура
1 mikecool
 
24.12.19
19:14
нет анализа оборота
2 zenon46
 
24.12.19
19:46
(1) как прикрутить?
3 zenon46
 
24.12.19
20:08
Нужно анализировать : ОстаткиТМЦОстаткиОбороты.КоличествоПриход Приход И ОстаткиТМЦОстаткиОбороты.КоличествоРасход Расход я правильно понимаю ?
4 zenon46
 
24.12.19
20:46
Не получается и так и эдак, может есть более лучшее решение как подсчитать количество дней в интервале, когда товар был на складе.
5 zenon46
 
25.12.19
09:02
Апну темку, пока так и не решил...
6 trad
 
25.12.19
09:16
не к вопросу:
вместо convert(datetime,:НачДата,112)
можно написать :НачДата~~
7 trad
 
25.12.19
09:18
ошибка тут
CASE WHEN ВлЗапрос.НачОст>0 THEN
если, как ты говоришь, товар пришел в этот день, то НачОст = 0
8 zenon46
 
25.12.19
09:24
(7) так вообще ерунду выдал "-25"
9 Kigo_Kigo
 
25.12.19
09:28
В чем сакраментальный смысл сделать подсчет дней именно в запросе? моя не понимать, если не знаешь как это сделать в запросе, выгрузи в ТЗ и крути как хошь и что хощь, а это наверно не по каконам 1С? Да плевать все хотели на эти каконы, если результат достигнут....
10 zenon46
 
25.12.19
09:30
(9) хотелось бы разобраться и научиться.
11 Kigo_Kigo
 
25.12.19
09:33
(10) ну если дата прихода = дате расхода, сколько дней должно получиться? прально нуль
соответсвенно просто в отчете ?(КолвоДней = 0, 1,Колводней) делов то
12 trad
 
25.12.19
09:51
(8) ну я не говорил что других ошибок нет))
но это первое что бросается в глаза
13 toypaul
 
гуру
25.12.19
10:01
если подзапрос возвращает данные на каждую дату, то

сумма(выбор когда начост + приход > 0 тогда 1 иначе 0 конец)

если не на каждую, то вообще не понятно как ты собираешься считать