Имя: Пароль:
1C
1C 7.7
v7: Где ошибка в запросе ? (результат пустой)
,
0 zenon46
 
13.11.19
15:47
Доброго дня!
Подскажите пожалуйста, где я допустил ошибку в запросе, т.к. результат пустой. Хотя это не правильно.

SELECT
coalesce($ДокументСтроки.Реализация.Номенклатура,     $ДокументСтроки.Реализация_Распоряжение.Номенклатура,     $ДокументСтроки.Реализация_Розница.Номенклатура) [Номенклатура],
    count (coalesce(ДокРеал.IDDOC, ДокРасп.IDDoc, ДокРозн.IDDoc)) AS КолПродаж
FROM
   _1SJourn Жур
INNER JOIN
   $ДокументСтроки.Реализация AS ДокРеал ON ДокРеал.IDDoc = Жур.IDDoc  
INNER JOIN
   $ДокументСтроки.Реализация_Распоряжение AS ДокРасп ON ДокРасп.IDDoc = Жур.IDDoc  
INNER JOIN
   $ДокументСтроки.Реализация_Розница AS ДокРозн ON ДокРозн.IDDoc = Жур.IDDoc    
WHERE
   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   coalesce($ДокументСтроки.Реализация.Номенклатура, $ДокументСтроки.Реализация_Распоряжение.Номенклатура, $ДокументСтроки.Реализация_Розница.Номенклатура) = :ВбрТовар
GROUP BY
coalesce($ДокРеал.Номенклатура, $ДокРасп.Номенклатура, $ДокРозн.Номенклатура)
1 Ёпрст
 
13.11.19
15:48
(0)
INNER JOIN
   $ДокументСтроки.Реализация AS ДокРеал ON ДокРеал.IDDoc = Жур.IDDoc  
INNER JOIN
   $ДокументСтроки.Реализация_Распоряжение AS ДокРасп ON ДокРасп.IDDoc = Жур.IDDoc
2 Ёпрст
 
13.11.19
15:49
ну не может iddocбыть одинаковым у документов разного вида
3 zenon46
 
13.11.19
16:04
(2) добавил
(Жур.iddocdef=$ВидДокумента.Реализация_Розница OR Жур.iddocdef=$ВидДокумента.Реализация_Распоряжение OR Жур.iddocdef=$ВидДокумента.Реализация)

все равно пусто
4 Ёпрст
 
13.11.19
16:13
(3) куда добавил ?
5 zenon46
 
13.11.19
16:13
(4) ну разумеется в WHERE
6 Ёпрст
 
13.11.19
16:14
если нужны данные с двух документов, то правильнее делать через union all, а не соединениями
7 Ёпрст
 
13.11.19
16:14
(5) И ? как ЭТО поможет при inner join ?
8 zenon46
 
13.11.19
16:14
(7) я уже на левое переделал
9 Ёпрст
 
13.11.19
16:15
ладно, не так, при INNER join
10 zenon46
 
13.11.19
16:22
(6) подскажите как правильно сделать по двум видам документов?
11 FIXXXL
 
13.11.19
16:26
(10) (6)
12 Salimbek
 
13.11.19
16:40
(10) Вообще говоря - правильнее писать в документах то, что тебе нужно в какой-то Регистр, а запросом выбирать данные из этого Регистра.
А если на Левое переделал, то, по идее, должно работать. Если не работает - скинь сюда новый запрос, иначе непонятно - чего там у тебя сейчас.
13 zenon46
 
13.11.19
16:49
(12) попробовал через union

SELECT
    $ДокументСтроки.Реализация.Номенклатура [Номенклатура],
    count(distinct ДокР.IDDOC) AS КолПродаж
FROM
   _1SJourn Жур
INNER JOIN
   $ДокументСтроки.Реализация AS ДокР ON ДокР.IDDoc = Жур.IDDoc  
WHERE
  (Жур.CLOSED&1=1) AND
   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   ($ДокументСтроки.Реализация.Номенклатура = :ВбрТовар)
GROUP BY $ДокР.Номенклатура
UNION ALL
SELECT
    $ДокументСтроки.Реализация_Розница.Номенклатура [Номенклатура],
    count(distinct ДокРоз.IDDOC)AS КолПродаж
FROM
   _1SJourn Жур
INNER JOIN
   $ДокументСтроки.Реализация_Розница AS ДокРоз ON ДокРоз.IDDoc = Жур.IDDoc  
WHERE
  (Жур.CLOSED&1=1) AND
   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   ($ДокументСтроки.Реализация_Розница.Номенклатура = :ВбрТовар)
GROUP BY $ДокРоз.Номенклатура
UNION ALL
SELECT
    $ДокументСтроки.Реализация_Распоряжение.Номенклатура [Номенклатура],
    count(distinct ДокРасп.IDDOC)AS КолПродаж
FROM
   _1SJourn Жур
INNER JOIN
   $ДокументСтроки.Реализация_Распоряжение AS ДокРасп ON ДокРасп.IDDoc = Жур.IDDoc  
WHERE
  (Жур.CLOSED&1=1) AND
   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
   ($ДокументСтроки.Реализация_Распоряжение.Номенклатура = :ВбрТовар)
GROUP BY $ДокРасп.Номенклатура

Запрос срабатывает, и счетчик показывает, но мне надо получить общий результат. (https://prnt.sc/pwewym)
14 palpetrovich
 
13.11.19
17:40
(13) все это во внутренний запрос, а во внешем - гриппируй
и точно все эти  документы не двигают один какой-нибудь регистр?
15 zenon46
 
13.11.19
18:14
(14) ПартииТМЦ точно двигают
16 palpetrovich
 
13.11.19
18:18
(15) ну так к регистру запрос и делай, (12) еще писали
17 zenon46
 
13.11.19
18:42
(16) через запрос к регистру я так же смогу получить количество документов в ТЧ которых попадалась выбранная номенклатура ?
18 palpetrovich
 
13.11.19
18:54
(17) дык, у меня к примеру это работает
SELECT
    count(distinct Рег.ИдДокумента) AS КолПродаж
    ,Рег.Товар
FROM dbo.РегистрДвижения_Партии Рег (nolock)
Where 1=1
    and Рег.Позиция > '20190901' and Рег.Позиция < '20190903'
    and Рег.ВидДокумента = 15 --РасходнаяНакладная
GROUP BY Рег.Товар

тебе это надо переделать под свое - запрос не по предствалению делать, а как метапарсер учит.
ну и заменить "and Рег.ВидДокумента = 15" на что-то типа "and Рег.ВидДокумента in(15,16,17)"
где 15,16,17 - это твои виды документов
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший