|
Страннное поведение запроса | ☑ | ||
---|---|---|---|---|
0
КУНГ ФУ 1С
19.11.12
✎
12:34
|
ТекстЗапроса = "
|Выбрать | Т1.Субконто, | Т1.Сумма |ИЗ | &Таблица1 как Т1 |ПОМЕСТИТЬ | ВТ_Т1 |////////////////////////////////////// |Выбрать | Т2.Субконто, | Т2.Сумма |ИЗ | &Таблица2 как Т2 |ПОМЕСТИТЬ | ВТ_Т2 |/////////////////////////////////////// |ВЫБРАТЬ | ВТ_Т1.Субконто, | ВЫБОР КОГДА | ВТ_Т1.Сумма >= isnull(ВТ_Т2.Сумма,0) Тогда | ВТ_Т1.Сумма - isnull(ВТ_Т2.Сумма,0) | ИНАЧЕ | 0 | КОНЕЦ | |ОБЪЕДЕНИТЬ ПО | ВТ_Т1.Субконто = ВТ_Т2.Субконто Есть такой запрос по таблицам значений, где &Таблица1 - движения X (ИТОГОВАЯ СУММА 1000) &Таблица2 - Движения Y, (ПУСТАЯ ТАБЛИЦА) Так вот после запроса, итоговая сумма по &Таблица1 увеличивается на n-сумму! Хотя &Таблица2 ПУСТАЯ. Долго думал в чем пробелема, а проблема оказалась в слудующем написал веместо | ВЫБОР КОГДА | ВТ_Т1.Сумма >= isnull(ВТ_Т2.Сумма,0) Тогда | ВТ_Т1.Сумма - isnull(ВТ_Т2.Сумма,0) | ИНАЧЕ | 0 | КОНЕЦ такое |ВТ_Т1.Сумма - isnull(ВТ_Т2.Сумма,0) И все заработало. отсюда вопрос как "ВЫБОР КОГДА КОНЕЦ" Влияет на результат запроса? |
|||
1
DrunkAnimal
19.11.12
✎
12:36
|
спрашивается накуй ... простите ... делать это в запросе
|
|||
2
DrunkAnimal
19.11.12
✎
12:37
|
ошибка здесь, кстати))
"ОБЪЕДЕНИТЬ ПО" |
|||
3
GLazNik
19.11.12
✎
12:38
|
(0) но выражения таки разные и дают разный результат
|
|||
4
КУНГ ФУ 1С
19.11.12
✎
12:38
|
(2) да ето не оригинальный запрос, писал от руки для примера
|
|||
5
vmv
19.11.12
✎
12:38
|
галимые понты
|
|||
6
КУНГ ФУ 1С
19.11.12
✎
12:39
|
(3) всмысле выражения разные и как могут дать другой результат когда вторая таблица пустая.
|
|||
7
DrunkAnimal
19.11.12
✎
12:40
|
(6) у самого нет идей?
|
|||
8
КУНГ ФУ 1С
19.11.12
✎
12:40
|
(5) какие понты, или написать запрос от руки это уже "ПОНТЫ"
|
|||
9
КУНГ ФУ 1С
19.11.12
✎
12:41
|
(7) были бы идеи, думаю не стал бы этот вопрос обсуждать на форуме.
|
|||
10
DrunkAnimal
19.11.12
✎
12:42
|
(8) что такое: ОБЪЕДЕНИТЬ ПО
| ВТ_Т1.Субконто = ВТ_Т2.Субконто я вот честно не могу аналога скл подобрать |
|||
11
GLazNik
19.11.12
✎
12:43
|
(6) тут сложно что-то говорить не видя всей картины... а так... "от руки для примера"
|
|||
12
КУНГ ФУ 1С
19.11.12
✎
12:44
|
Запрос.Текст =
"ВЫБРАТЬ | ЕСТЬNULL(Основной.Субконто1, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто1, | ЕСТЬNULL(Основной.Субконто2, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто2, | ЕСТЬNULL(Основной.Субконто3, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто3, | Основной.СуммаОстатокДт, | Основной.СуммаОстатокКт |ПОМЕСТИТЬ Основной |ИЗ | &Основной КАК Основной |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(Сторно.Субконто1, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто1, | ЕСТЬNULL(Сторно.Субконто2, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто2, | ЕСТЬNULL(Сторно.Субконто3, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто3, | Сторно.СуммаОстатокДт КАК СуммаОстатокДт, | Сторно.СуммаОстатокКт КАК СуммаОстатокКт |ПОМЕСТИТЬ Сторно |ИЗ | &Сторно КАК Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Основной.Субконто1, | Основной.Субконто2, | Основной.Субконто3, | Основной.СуммаОстатокДт - ЕСТЬNULL(Сторно.СуммаОстатокДт, 0) КАК СуммаОстатокДт, | Основной.СуммаОстатокКт - ЕСТЬNULL(Сторно.СуммаОстатокКт, 0) КАК СуммаОстатокКт |ИЗ | Основной КАК Основной | ЛЕВОЕ СОЕДИНЕНИЕ Сторно КАК Сторно | ПО Основной.Субконто1 = Сторно.Субконто1 | И Основной.Субконто2 = Сторно.Субконто2 | И Основной.Субконто3 = Сторно.Субконто3"; |
|||
13
КУНГ ФУ 1С
19.11.12
✎
12:44
|
(12) оригинальный запрос
|
|||
14
GLazNik
19.11.12
✎
12:44
|
+(11) но в общем случае
| ВЫБОР КОГДА | ВТ_Т1.Сумма >= isnull(ВТ_Т2.Сумма,0) Тогда | ВТ_Т1.Сумма - isnull(ВТ_Т2.Сумма,0) | ИНАЧЕ | 0 | КОНЕЦ совсем не то же самое что |ВТ_Т1.Сумма - isnull(ВТ_Т2.Сумма,0) |
|||
15
КУНГ ФУ 1С
19.11.12
✎
12:45
|
(14) Вот старый запрос
Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(Основной.Субконто1, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто1, | ЕСТЬNULL(Основной.Субконто2, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто2, | ЕСТЬNULL(Основной.Субконто3, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто3, | Основной.СуммаОстатокДт, | Основной.СуммаОстатокКт |ПОМЕСТИТЬ Основной |ИЗ | &Основной КАК Основной |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(Сторно.Субконто1, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто1, | ЕСТЬNULL(Сторно.Субконто2, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто2, | ЕСТЬNULL(Сторно.Субконто3, ЗНАЧЕНИЕ(Справочник.Субконто.ПустаяСсылка)) КАК Субконто3, | Сторно.СуммаОстатокДт КАК СуммаОстатокДт, | Сторно.СуммаОстатокКт КАК СуммаОстатокКт |ПОМЕСТИТЬ Сторно |ИЗ | &Сторно КАК Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Основной.Субконто1, | Основной.Субконто2, | Основной.Субконто3, | ВЫБОР | КОГДА Основной.СуммаОстатокДт >= ЕСТЬNULL(Сторно.СуммаОстатокДт, 0) | ТОГДА Основной.СуммаОстатокДт - ЕСТЬNULL(Сторно.СуммаОстатокДт, 0) | ИНАЧЕ 0 | КОНЕЦ КАК СуммаОстатокДт, | ВЫБОР | КОГДА Основной.СуммаОстатокКт >= ЕСТЬNULL(Сторно.СуммаОстатокКт, 0) | ТОГДА Основной.СуммаОстатокКт - ЕСТЬNULL(Сторно.СуммаОстатокКт, 0) | ИНАЧЕ 0 | КОНЕЦ КАК СуммаОстатокКт |ИЗ | Основной КАК Основной | ЛЕВОЕ СОЕДИНЕНИЕ Сторно КАК Сторно | ПО Основной.Субконто1 = Сторно.Субконто1 | И Основной.Субконто2 = Сторно.Субконто2 | И Основной.Субконто3 = Сторно.Субконто3"; |
|||
16
КУНГ ФУ 1С
19.11.12
✎
12:49
|
up!
|
|||
17
GLazNik
19.11.12
✎
12:50
|
(15) а теперь бы расшифровать еще это:
"Так вот после запроса, итоговая сумма по &Таблица1 увеличивается на n-сумму! " |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |