Имя: Пароль:
1C
1C 7.7
v7: Прямой запрос по партиям
0 PRO100 NigGaZ
 
19.10.13
14:55
Выполняю запрос

SELECT :ВыбФирма [Фирма $Справочник.Фирмы]
    , МОЛ [МОЛ $Справочник.ФизЛица]
    , Номенклатура [Номенклатура $Справочник.Номенклатура]
    , СтатусПартии [СтатусПартии $Перечисление.СтатусыПартии]
    , Партия [Партия $Справочник.Партии]
    , ДатаПартии ДатаПартии
    , ЦенаПрод ЦенаПрод
    , SUM(Количество) Количество
    , SUM(СуммаУпр) СуммаУпр
    , SUM(СуммаРуб) СуммаРуб
    , SUM(СуммаБезНДС) СуммаБезНДС
FROM (
SELECT МОЛ
    , Номенклатура
    , СтатусПартии
    , Партия
    , ДатаПартии
    , ЦенаПрод
    , SUM(КоличествоОстаток) Количество
    , SUM(СуммаУпрОстаток) СуммаУпр
    , SUM(СуммаРубОстаток) СуммаРуб
    , SUM(СуммаБезНДСОстаток) СуммаБезНДС
FROM $РегистрОстатки.ПартииНаличие(:КонДата,,Номенклатура = :ВыбНом,,) AS ПартииНаличие
GROUP BY МОЛ
    , Номенклатура
    , СтатусПартии
    , Партия
    , ДатаПартии
    , ЦенаПрод) AS Подзапрос
WHERE (Количество != 0) AND (СуммаУпр != 0) AND (СуммаРуб != 0)    AND (СуммаБезНДС != 0)
GROUP BY МОЛ
    , Номенклатура
    , СтатусПартии
    , Партия
    , ДатаПартии
    , ЦенаПрод

или
Выполняю запрос

SELECT :ВыбФирма [Фирма $Справочник.Фирмы]
    , МОЛ [МОЛ $Справочник.ФизЛица]
    , Номенклатура [Номенклатура $Справочник.Номенклатура]
    , СтатусПартии [СтатусПартии $Перечисление.СтатусыПартии]
    , Партия [Партия $Справочник.Партии]
    , ДатаПартии ДатаПартии
    , ЦенаПрод ЦенаПрод
    , SUM(Количество) Количество
    , SUM(СуммаУпр) СуммаУпр
    , SUM(СуммаРуб) СуммаРуб
    , SUM(СуммаБезНДС) СуммаБезНДС
FROM (
SELECT МОЛ
    , Номенклатура
    , СтатусПартии
    , Партия
    , ДатаПартии
    , ЦенаПрод
    , SUM(КоличествоОстаток) Количество
    , SUM(СуммаУпрОстаток) СуммаУпр
    , SUM(СуммаРубОстаток) СуммаРуб
    , SUM(СуммаБезНДСОстаток) СуммаБезНДС
FROM $РегистрОстатки.ПартииНаличие(:КонДата,,Номенклатура = :ВыбНом,,) AS ПартииНаличие
GROUP BY МОЛ
    , Номенклатура
    , СтатусПартии
    , Партия
    , ДатаПартии
    , ЦенаПрод) AS Подзапрос
GROUP BY МОЛ
    , Номенклатура
    , СтатусПартии
    , Партия
    , ДатаПартии
    , ЦенаПрод
HAVING SUM(Количество != 0) AND SUM(СуммаУпр != 0) AND SUM(СуммаРуб != 0) AND SUM(СуммаБезНДС != 0)

Без условия WHERE или HAVING в результате 2 строки где количество есть 17 и 90 (остальные агрегируемые нулю)
когда добавляю условия в результате ноль строк, не понимаю использую AND (должны быть выполнены все условия тогда не должно быть строки), а на деле получается что выполняется только одно условие
1 КонецЦикла
 
19.10.13
15:14
Если убрать HAVING и посмотреть что получается?
2 PRO100 NigGaZ
 
19.10.13
15:16
без условий(где и имеется) есть 2 строки
Количество,СуммаУПР,СуммаРуб,СуммаРубБезНДС
17         0        0        0
90         0        0        0
3 КонецЦикла
 
19.10.13
15:26
Перепиши условие на или
Ты хочешь показывать строки где хоть одно поле ненулевое?
4 PRO100 NigGaZ
 
19.10.13
15:32
именно так, нужны строки где есть хоть одно ненулевое...
5 PRO100 NigGaZ
 
19.10.13
15:33
да or помогло, что то я не так понимаю ))
6 PRO100 NigGaZ
 
19.10.13
15:36
я понял where или having условие выбора, а не исключения...
7 PRO100 NigGaZ
 
19.10.13
15:36
ну или как то так )
8 Mikeware
 
19.10.13
15:51
точно
HAVING SUM(Количество != 0) AND SUM(СуммаУпр != 0) AND SUM(СуммаРуб != 0) AND SUM(СуммаБезНДС != 0)
а не
HAVING SUM(Количество) != 0 AND SUM(СуммаУпр) != 0 AND SUM(СуммаРуб) != 0 AND SUM(СуммаБезНДС) != 0
9 КонецЦикла
 
19.10.13
16:07
(5) Школу сачковал сцуко
10 PRO100 NigGaZ
 
19.10.13
16:46
да знаю, эту часть я писал слету из первого запроса для примера, скопировать не было от куда, нельзя изменить сообщения ))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший