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