|   |   | 
| 
 | 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 (кроме КОЛИЧЕСТВО()). | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |