|
как добавить условие в запрос? | ☑ | ||
---|---|---|---|---|
0
UIV
04.09.12
✎
13:52
|
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт, | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&СчетаСписок), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |ГДЕ | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток <> 0 | |УПОРЯДОЧИТЬ ПО | Субконто1, | Субконто2, | Счет"; Как добавить в него отбор только тех записей, по которым на конец периода имеется одновременно ненулевое дебетовое и кредитовое сальдо в развороте по субконто1. |
|||
1
BigShmax
04.09.12
✎
14:05
|
вложенный запрос в условии с параметрами виртуальной таблицы, не?
|
|||
2
UIV
04.09.12
✎
14:10
|
Это вариант. Спасибо. Попробую.
|
|||
3
UIV
04.09.12
✎
15:24
|
Мда. А счета то сворачиваются и итоговый остаток в разрезе субконто1 получается все равно либо дебетовый либо кредитовый.
Переформулирую вопрос. Имеется счет (например 60) как запросом отобрать контрагентов (субконто1) по которым имеются договора (субконто2) имеющие дебетовый остаток и договора имеющие кредитовый остаток. |
|||
4
Maxus43
04.09.12
✎
15:28
|
>>например 60
у него тока один остаток. Развёрнутый остаток у Активно-Пассивных счетов |
|||
5
UIV
04.09.12
✎
15:33
|
Я в курсе, что один. Мне требуется следующее:
Есть контрагент, у него два договора. По одному договору имеется кредитовый остаток по второму дебетовый. Нужно отобрать именно таких контрагентов, и при этом не отбирать тех, по которым остатки по договорам либо только дебетовые либо только кредитовые. При этом хотелось бы все этот как то полаконичней оформить и без извращений. |
|||
6
GROOVY
04.09.12
✎
15:45
|
(5) Развернутый остаток в итогах по субконто контрагенты даст нужные циферы.
|
|||
7
UIV
04.09.12
✎
15:51
|
(6) Как его развернуть.
|
|||
8
Мыш
04.09.12
✎
15:59
|
Предлагаю внутреннее соединение таблицы с собой по равенству контрагентов, неравенству договоров и ненулевым сальдо.
|
|||
9
DUDE
04.09.12
✎
16:20
|
(7) Груви, как я понимаю, имел в виду запрос типа:
"ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт, | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&СчетаСписок), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |ГДЕ | ХозрасчетныйОстаткиИОбороты.СуммаРазвернутыйКонечныйОстатокДт <> 0 | И ХозрасчетныйОстаткиИОбороты.СуммаРазвернутыйКонечныйОстатокКт <> 0 | |УПОРЯДОЧИТЬ ПО | Субконто1, | Счет"; Только на выходе ты получишь выборку без договоров. Если нужны договоры, то можно потом ее использовать в твоем запросе в качестве отбора в вирт. таблице. |
|||
10
DUDE
04.09.12
✎
16:27
|
(10) или я ступил? хм
|
|||
11
UIV
04.09.12
✎
16:37
|
(9) Не катит. Не хранится по этим счетам СуммаРазвернутыйКонечныйОстатокДт и СуммаРазвернутыйКонечныйОстатокДт. Оно сворачивается ранее, соответственно одно из этих полей всегда нулевое.
|
|||
12
UIV
04.09.12
✎
16:39
|
Придется пойти несистемным путем. Запрошу все в развороте по договорам, выгружу в таблицу значений и сверну ее по контрагентам. Потом использую ее для отбора. Блин, как то это семерочно получается, хочу запрос, не хочу так онокодить. :(
|
|||
13
DUDE
04.09.12
✎
16:48
|
(11) Угу, ступил.
(12) Если тебе нужно именно контрагенты, у которых есть договоры и с + и с - остатком, то это не выход - ты ведь просто отберешь договоры, у которых есть остаток. Может сделать по типу такого: выбрать счет, субконто1, количество(субконто2), максимум(выбор когда СуммаКонечныйОстаток > 0 тогда истина иначе ложь конец) как ЕстьДоговорВПлюс, максимум(выбор когда СуммаКонечныйОстаток < 0 тогда истина иначе ложь конец) как ЕстьДоговорВМинус, ... Из ... Сгруппировать по счет, субконто1 Имеющие максимум(выбор когда СуммаКонечныйОстаток > 0 тогда истина иначе ложь конец) и максимум(выбор когда СуммаКонечныйОстаток < 0 тогда истина иначе ложь конец) на выходе врем. таблица с контрагентами, у которых есть договоры с остатками в + и - |
|||
14
UIV
04.09.12
✎
16:52
|
А вобще разочаровывают меня восьмерочные запросы. Обещали блекджек и разное, а в итоге банальный аналог ТЗ.Свернуть("Субконто1","Сумма1,Сумма2") и тот выполняется через одно место.
|
|||
15
DUDE
04.09.12
✎
16:56
|
(14) Ненене. Просто нужно с ними поработать, опыта набраться. Имхо, по сравнению с тем, что давала чистая 7.7 запросы на 8 просто шикарные :)
|
|||
16
UIV
04.09.12
✎
17:12
|
(15) Щасс. Вот что у меня в итоге получилось. Слабо тоже самое одним запросом?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаДт, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&СчетаСписок), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты"; СчетаСписок = Новый СписокЗначений; СчетаСписок.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками); //60 СчетаСписок.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками); //62 // СчетаСписок.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСРазнымиДебиторамиИКредиторами); //76 Запрос.УстановитьПараметр("НачПериода",НачПериода); Запрос.УстановитьПараметр("КонПериода",КонецДня(КонПериода)); Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("СчетаСписок",СчетаСписок); ТЗ = Запрос.Выполнить().Выгрузить(); ТЗ.Свернуть("Субконто1","СуммаДт,СуммаКт"); КонтрагентыСписок = Новый СписокЗначений; Для каждого СтрокаТЗ из ТЗ цикл Если (СтрокаТз.СуммаДт > 0) и (СтрокаТз.СуммаКт > 0) тогда КонтрагентыСписок.Добавить(СтрокаТЗ.Субконто1); КонецЕсли; КонецЦикла; Запрос.УстановитьПараметр("КонтрагентыСписок",КонтрагентыСписок); Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаДт, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКт, | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &НачПериода, | &КонПериода, | , | , | Счет В ИЕРАРХИИ (&СчетаСписок), | , | Организация = &Организация | И Субконто1 В (&КонтрагентыСписок)) КАК ХозрасчетныйОстаткиИОбороты | |УПОРЯДОЧИТЬ ПО | Субконто1, | Субконто2, | Счет"; |
|||
17
DUDE
04.09.12
✎
18:00
|
(17) одним запросом и будет по типу как писал в (13)
что-то вроде этого: " |выбрать | счет, | субконто1, | количество(субконто2), | максимум(выбор когда СуммаОстаток > 0 тогда истина иначе ложь конец) как ЕстьДоговорВПлюс, | максимум(выбор когда СуммаОстаток < 0 тогда истина иначе ложь конец) как ЕстьДоговорВМинус, | СуммаКонечныйОстаток |ПОМЕСТИТЬ ВТ_Контрагенты | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПериодаГраница, Счет В ИЕРАРХИИ (&СчетаСписок), &ВидыСубконто, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |Сгруппировать по | счет, | субконто1 |Имеющие | максимум(выбор когда СуммаОстаток > 0 тогда истина иначе ложь конец) | и максимум(выбор когда СуммаОстаток < 0 тогда истина иначе ложь конец) |Индексировать По субконто1 //счет, субконто1 |; |ВЫБРАТЬ РАЗЛИЧНЫЕ Счет ПОМЕСТИТЬ ВТ_Счета ИЗ ВТ_Контрагенты; |ВЫБРАТЬ РАЗЛИЧНЫЕ Субконто1 ПОМЕСТИТЬ ВТ_ТолькоКонтрагенты ИЗ ВТ_Контрагенты; |; |ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаДт, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКт, | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &НачПериода, | &КонПериода, | , | , | Счет В (ВЫбрать Счет ИЗ ВТ_Счета), | &ВидыСубконто, | Организация = &Организация | И Субконто1 В (ВЫбрать Субконто1 ИЗ ВТ_ТолькоКонтрагенты)) КАК ХозрасчетныйОстаткиИОбороты // думаю, условие не лишнее на случай если по одному контрагенту будут // на разных субсчетах остатки, но не на всех остатки по дог. и в + и в - |ГДЕ (счет, субконто1) В (ВЫбрать Счет, Субконто1 ИЗ ВТ_Контрагенты) | |УПОРЯДОЧИТЬ ПО | Субконто1, | Субконто2, | Счет КонПериодаГраница = новый граница(ДатаКонца, ВидГраницы.Включая) - остатки на конец указ. секунды ВидыСубконто - массив значений ПВЗ ВидыСубконтоХозрасчетные Контрагенты, Договоры. |
|||
18
DUDE
04.09.12
✎
18:01
|
после "|ВЫБРАТЬ РАЗЛИЧНЫЕ Субконто1 ПОМЕСТИТЬ ВТ_ТолькоКонтрагенты ИЗ ВТ_Контрагенты;" убрать ; надо
|
|||
19
Ant1773
25.09.12
✎
14:52
|
ВЫБРАТЬ
ХозрасчетныйРФОстатки1.Субконто1 КАК Контрагент1, ХозрасчетныйРФОстатки1.Субконто2 КАК Договор1, ХозрасчетныйРФОстатки2.Субконто1 КАК Контрагент2, ХозрасчетныйРФОстатки2.Субконто2 КАК Договор2, ХозрасчетныйРФОстатки1.СуммаОстаток КАК СуммаОстаток1, ХозрасчетныйРФОстатки2.СуммаОстаток КАК СуммаОстаток2, ХозрасчетныйРФОстатки1.Счет КАК Счет1, ХозрасчетныйРФОстатки2.Счет КАК Счет2 ИЗ РегистрБухгалтерии.ХозрасчетныйРФ.Остатки(&НаДату, Счет В (&Счет61_1), , ) КАК ХозрасчетныйРФОстатки1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.ХозрасчетныйРФ.Остатки(&НаДату, счет В (&Счет61_2), , ) КАК ХозрасчетныйРФОстатки2 ПО ХозрасчетныйРФОстатки1.Субконто1 = ХозрасчетныйРФОстатки2.Субконто1 И ХозрасчетныйРФОстатки1.Субконто2 = ХозрасчетныйРФОстатки2.Субконто2 |
|||
20
Ant1773
25.09.12
✎
14:54
|
&Счет61_1 - не авансовые субсчета (60.1, 60.21, 62.1, 62.21)
&Счет61_2 - авансовые субсчета (60.2, 60.22, 62.2, 62.22) |
|||
21
Ant1773
25.09.12
✎
15:02
|
(19) Выведет некорректно закрытые договора (т.е. имеющие дебетово-кредитовые остатки по одному договору).
Убираем соединение по Субконто2, получаем контрагентов имеющих дебетово-кредитовые остатки... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |