|
Помогите плз с запросом... | ☑ | ||
---|---|---|---|---|
0
WF72
03.12.12
✎
11:20
|
Выбираю все регистраторы по аналитике контрагент-договор, у которых есть остатки на заданную дату. Но как только добавляю левое соединение, суммы остатков начинают множиться на количество регистраторов. Скажите плз, что не так в запросе?
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Остатки.Субконто1 КАК Контрагент, | Остатки.Субконто2 КАК Договор, | Обороты.Регистратор КАК Рег, | СУММА(Остатки.СуммаОстатокДт) КАК СКД, | СУММА(Остатки.СуммаОстатокКт) КАК СКК |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПериода, Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация) КАК Остатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонПериода, Регистратор, , , Организация = &Организация) КАК Обороты | ПО Остатки.Субконто1 = Обороты.Субконто1 | И Остатки.Субконто2 = Обороты.Субконто2 | И Остатки.Счет = Обороты.Счет | |СГРУППИРОВАТЬ ПО | Остатки.Субконто1, | Остатки.Субконто2, | Обороты.Регистратор | |УПОРЯДОЧИТЬ ПО | Контрагент, | Договор, | Рег |ИТОГИ | СУММА(СКД), | СУММА(СКК) |ПО | ОБЩИЕ, | Контрагент, | Договор |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
1
Maxus43
03.12.12
✎
11:20
|
ОстаткиИОбороты есть табличка
|
|||
2
Undefined vs NULL
03.12.12
✎
11:21
|
"Выбираю все регистраторы по аналитике контрагент-договор, у которых есть остатки на заданную дату"
расшифруй |
|||
3
WF72
03.12.12
✎
11:25
|
(1) То есть делать запрос сразу по регистру ОстаткиИОбороты? Но ведь выберется всё данные подряд (и остатки и обороты), а мне нужно только по контрагентам/договорам с остатками на заданную дату.
(2) Выбираем сначала только тех контрагентов, у которых есть остатки по заданным счетам на заданную дату. И для этих контрагентов нужно показать документы-регистраторы. |
|||
4
Maxus43
03.12.12
✎
11:29
|
(3) ну поставь условие что Нач остаток <> 0. будет тоже самое
|
|||
5
Ёпрст
03.12.12
✎
11:29
|
(3) условием на остаток отрежешь лишнее потом
|
|||
6
Undefined vs NULL
03.12.12
✎
11:30
|
временная таблица спасет
|
|||
7
Ёпрст
03.12.12
✎
11:30
|
А в той поделке, что в (0) - нужно Объеденить Всё, а не левое соединение, если что
|
|||
8
WF72
03.12.12
✎
15:07
|
(4) Поменял запрос, но теперь почему-то светятся еще и данные, у которых нет конечных остатков... не все, а только некоторые. По оборотке у этих контрагентов конечных остатков нет, а в запрос тем не менее они попадают...
Запрос.Текст = "ВЫБРАТЬ | ВыбРег.Субконто1 КАК Контрагент, | ВыбРег.Субконто2 КАК Договор, | ВыбРег.Регистратор КАК Регистратор, | СУММА(ВыбРег.СуммаКонечныйОстатокДт) КАК СКД, | СУММА(ВыбРег.СуммаКонечныйОстатокКт) КАК СКК |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, &КонПериода, Регистратор, , Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация) КАК ВыбРег |ГДЕ | ВыбРег.СуммаКонечныйОстаток <> 0 | И ВыбРег.СуммаНачальныйОстаток = 0 | |СГРУППИРОВАТЬ ПО | ВыбРег.Субконто1, | ВыбРег.Субконто2, | ВыбРег.Регистратор | |УПОРЯДОЧИТЬ ПО | Контрагент, | Договор, | Регистратор |ИТОГИ | СУММА(СКД), | СУММА(СКК) |ПО | ОБЩИЕ, | Контрагент, | Договор |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
9
WF72
04.12.12
✎
10:40
|
(7) Попробовал вариант с Объединить всё. Так гораздо лучше! Но в запрос попадают и все контрагенты с оборотами (без конечного остатка), правда уже без сумм, что самое главное. Можно отфильтровать их при выводе, но хотелось бы сразу в запросе. Подскажи плз, что для этого поменять в запросе...
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Остатки.Субконто1 КАК Контрагент, | Остатки.Субконто2 КАК Договор, | СУММА(Остатки.СуммаОстатокДт) КАК СКД, | СУММА(Остатки.СуммаОстатокКт) КАК СКК, | 0 КАК Рег |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПериода, Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация) КАК Остатки | |СГРУППИРОВАТЬ ПО | Остатки.Субконто1, | Остатки.Субконто2 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Обороты.Субконто1, | Обороты.Субконто2, | 0, | 0, | Обороты.Регистратор |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонПериода, Регистратор, Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация, , ) КАК Обороты | |СГРУППИРОВАТЬ ПО | Обороты.Регистратор, | Обороты.Субконто1, | Обороты.Субконто2 | |УПОРЯДОЧИТЬ ПО | Контрагент, | Договор, | Рег |ИТОГИ | СУММА(СКД), | СУММА(СКК) |ПО | ОБЩИЕ, | Контрагент, | Договор |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
10
Maxus43
04.12.12
✎
10:42
|
(8) какое условие поставил, так и работает:
| ВыбРег.СуммаКонечныйОстаток <> 0 | И ВыбРег.СуммаНачальныйОстаток = 0 можешь помедитировать над тем что получается, и почему какие остатки показывает |
|||
11
Maxus43
04.12.12
✎
10:43
|
>>светятся еще и данные, у которых нет конечных остатков
>>ВыбРег.СуммаКонечныйОстаток <> 0 ты это и сказал запросу делать |
|||
12
Maxus43
04.12.12
✎
10:44
|
(11) + тьфу, т.е. показывет данные в случае
СуммаКонечныйОстаток = 0 И СуммаНачальныйОстаток <> 0 |
|||
13
Maxus43
04.12.12
✎
10:45
|
не, пойду кофя пить, не проснулся
|
|||
14
WF72
04.12.12
✎
10:55
|
(13) :)
СуммаНачальныйОстаток = 0 это чтобы в запросе первой строкой по контрагенту не вылезали итоговые данные на конец периода, без регистратора, они не нужны. СуммаКонечныйОстаток <> 0 это как раз для того, чтобы отсечь обороты без текущих остатков. В этом запросе разобраться пока не смог, принялся за вариант с объединением. |
|||
15
WF72
04.12.12
✎
10:56
|
получается, что условие СуммаКонечныйОстаток <> 0 почему-то работает криво...
|
|||
16
Maxus43
04.12.12
✎
10:57
|
(15) на всякий случай сделай СУММА(ЕстьNull(ВыбРег.СуммаКонечныйОстатокДт,0)) КАК СКД
у СКК также |
|||
17
WF72
04.12.12
✎
11:05
|
Сделал, ничего не поменялось. Получается, в СуммаКонечныйОстаток есть данные, хотя оборотка их не светит... 8-О
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |