Имя: Пароль:
1C
1С v8
А вот никак не обойти проблему - поле вне группировки?
0 IKSparrow
 
30.09.11
21:20
Есть огромный такой запрос и одна из его частей выглядит так:


ВЫБРАТЬ
           ЗачётПредоплаты.КонтрагентСубконто3,
           СУММА(-ЗачётПредоплаты.Сумма),
           0,
           0,
           ЗачётПредоплаты.Ссылка,
           ЗачётПредоплаты.Организация,
           ВЫБОР
                       КОГДА СтавкиНДС.СтавкаНДС = &Ст18 ТОГДА "НДС"
                       ИНАЧЕ ""
           КОНЕЦ
ИЗ
           Документ.ЗачетПредоплаты_РСБУ КАК ЗачётПредоплаты
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗачётПредоплаты.Ссылка, ЗачётПредоплаты.КонтрагентСубконто3 КАК Номенклатура, ЗачётПредоплаты.КонтрагентСубконто3.СтавкаНДС КАК СтавкаНДС
           ИЗ Документ.ЗачетПредоплаты_РСБУ КАК ЗачётПредоплаты) КАК СтавкиНДС
           ПО ЗачётПредоплаты.Ссылка = СтавкиНДС.Ссылка
           И ЗачётПредоплаты.КонтрагентСубконто3 = СтавкиНДС.Номенклатура
ГДЕ
           ЗачётПредоплаты.Проведен = ИСТИНА
           И ЗачётПредоплаты.Дата МЕЖДУ &НачалоПериода И &КонецПериода
           И ЗачётПредоплаты.КонтрагентСчет В ИЕРАРХИИ(&Счета62)
           
СГРУППИРОВАТЬ ПО
           ЗачётПредоплаты.КонтрагентСубконто3,
           ЗачётПредоплаты.Ссылка,
           ЗачётПредоплаты.Организация


И выполнение условия по "КОГДА СтавкиНДС.СтавкаНДС = &Ст18 ТОГДА "НДС"" не может быть выполнено поскольку "Поле СтавкиНДС.СтавкаНДС не входит в группу"

Конечно, можно было бы добавить это поле в группировку, но:
а) оно мне там не нужно
б) придётся весь запрос (ну очень некислых размеров) переписывать.

Варианты есть иные? Так чтобы на ёлку влезть и не поцарапаться.
1 ZanderZ
 
01.10.11
04:01
сделай подзапрос
2 IKSparrow
 
01.10.11
10:42
(1) Так сделал же - вон где левое соединение. Мне это долбанное поле нужно только для выполнения условия. А не пашет такой вариант.
3 Пол Ньюман
 
01.10.11
10:43
(2) Поле которое не пашет должно быть внутри подзапроса
4 IKSparrow
 
01.10.11
11:26
Так вот же оно! Это подзапрос.

ВЫБРАТЬ
ЗачётПредоплаты.Ссылка,
ЗачётПредоплаты.КонтрагентСубконто3 КАК Номенклатура, ЗачётПредоплаты.КонтрагентСубконто3.СтавкаНДС КАК СтавкаНДС
ИЗ Документ.ЗачетПредоплаты_РСБУ КАК ЗачётПредоплаты


Поле СтавкаНДС! Или я что-то не догоняю?:(
5 Пол Ньюман
 
01.10.11
11:29
Редкостный идиот

ВЫБОР
                       КОГДА СтавкиНДС.СтавкаНДС = &Ст18 ТОГДА "НДС"
                       ИНАЧЕ ""
           КОНЕЦ

у тебя внутри подзапроса?
6 dmpl
 
01.10.11
11:38
(0) Ну а для чего тогда вообще это поле вычисляется? Вообще вариантов 2: либо включать в СГРУППИРОВАТЬ ПО, либо брать МАКСИМУМ().
7 dmpl
 
01.10.11
11:39
(6) Сделать вот так:


СГРУППИРОВАТЬ ПО
           ЗачётПредоплаты.КонтрагентСубконто3,
           ЗачётПредоплаты.Ссылка,
           ЗачётПредоплаты.Организация,
           ВЫБОР
                       КОГДА СтавкиНДС.СтавкаНДС = &Ст18 ТОГДА "НДС"
                       ИНАЧЕ ""
           КОНЕЦ
8 Пол Ньюман
 
01.10.11
11:40
Мне кажется человек просто не понимает смысла СГРУППИРОВАТЬ, возможно путает с ИТОГИ
9 vde69
 
01.10.11
11:41
конструкторор запросов придумали трусы :)
10 IKSparrow
 
01.10.11
21:45
(6) Там просто НДС либо вычисляется либо не вычисляется. В зависимости от ставки НДС у номенклатуры.

Т.е. запрос так выглядит:
ВЫБРАТЬ
           ЗачётПредоплаты.КонтрагентСубконто3,
           СУММА(-ЗачётПредоплаты.Сумма),
           ВЫБОР
           КОГДА СтавкиНДС.СтавкаНДС = &Ст18 ТОГДА ВЫРАЗИТЬ(СУММА(-ЗачётПредоплаты.Сумма)/118*18 КАК ЧИСЛО(18,2))
           ИНАЧЕ 0,
           0,
           ЗачётПредоплаты.Ссылка,
           ЗачётПредоплаты.Организация
11 dmpl
 
02.10.11
23:17
(10) Тогда это выражение просто в СУММА() поместить.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.