|
NULL в результате запроса | ☑ | ||
---|---|---|---|---|
0
PuhUfa
25.12.13
✎
12:15
|
Простой запрос:
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | СУММА(ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборотКт,0)) КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , , , Организация = &Организация, , ) КАК ХозрасчетныйОбороты |ГДЕ | ХозрасчетныйОбороты.Счет = &Счет | И ХозрасчетныйОбороты.Субконто2 = &Субконто2"; Задаю счет 51 и субконто по которому не было движений. В результате запроса получаю СуммаОборотКт = NULL Что не так? |
7 10 17 18 |
||
1
1Сергей
25.12.13
✎
12:17
|
Почему не пользуешься параметрами виртуальной таблицы?
|
3 |
||
2
Maxus43
25.12.13
✎
12:17
|
условия в параметры, по соседству организации, и будет у тебя пустой результат запроса. Да и щас собственно должен быть пустой
|
3 18 |
||
3
PuhUfa
25.12.13
✎
12:20
|
4 6 |
|||
4
1Сергей
25.12.13
✎
12:23
|
(3) ты ведь в 0 не весь запрос показал, правда?
|
8 |
||
5
1Сергей
25.12.13
✎
12:23
|
там, наврено, соединения есть...
|
|||
6
vicof
25.12.13
✎
12:23
|
(3) агрегируется пустой результат запроса, видимо, поэтому и возникают NULLы, соответственно результат не пустой
|
11 15 |
||
7
vicof
25.12.13
✎
12:24
|
(0) что консоль говорит?
|
|||
8
PuhUfa
25.12.13
✎
12:25
|
(4) ну если тебе так хочется -)
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | СУММА(ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборотКт,0)) КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , , , Организация = &Организация, , ) КАК ХозрасчетныйОбороты |ГДЕ | ХозрасчетныйОбороты.Счет = &Счет"; Запрос.УстановитьПараметр("ДатаНач", ДатаНачала); Запрос.УстановитьПараметр("ДатаКон", ДатаКонца); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("Счет", Детализация.Счет); Если Детализация.Счет = ПланыСчетов.Хозрасчетный.РасчетныеСчета Тогда Запрос.Текст = Запрос.Текст + " | И ХозрасчетныйОбороты.Субконто2 = &Субконто2"; Запрос.УстановитьПараметр("Субконто2",Детализация.Аналитика); ИначеЕсли Детализация.Счет = ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами Тогда Иначе КонецЕсли; Результат = Запрос.Выполнить(); ВТ = Результат.Выгрузить(); Если Результат.Пустой() Тогда Возврат 0; Иначе Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Возврат Выборка.СуммаОборотКт; КонецЦикла КонецЕсли; |
9 12 |
||
9
1Сергей
25.12.13
✎
12:28
|
(8) а теперь сфотографируй, что у тебя в ВТ
|
|||
10
GANR
25.12.13
✎
12:28
|
(0) Скорее всего в выборку ДО группировки не попадает ни одной записи - нужно ставить еще одну проверку.
ЕСТЬNULL(СУММА(ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборотКт,0)),0) |
11 13 20 |
||
11
vicof
25.12.13
✎
12:30
|
||||
12
Sabbath
25.12.13
✎
12:31
|
(8) обманщик
|
13 |
||
13
PuhUfa
25.12.13
✎
12:32
|
14 |
|||
14
Sabbath
25.12.13
✎
12:33
|
(13) не показал весь запрос
|
|||
15
mikecool
25.12.13
✎
12:39
|
(6) емнип, агрегаты в 1с не должны возвращать нул
|
16 20 |
||
16
1Сергей
25.12.13
✎
12:42
|
(15) агрегаты = виртуальные таблицы?
|
|||
17
GenV
25.12.13
✎
12:42
|
10+ еще способ: добавить в запрос (0) какую-нибудь группировку. Например "Счет", он все равно один.
|
|||
18
Defender aka LINN
25.12.13
✎
13:28
|
||||
19
Ненавижу 1С
гуру
25.12.13
✎
13:38
|
достаточно было:
ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт |
|||
20
WildSery
25.12.13
✎
14:15
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |