Имя: Пароль:
1C
1С v8
Проверка на пустое представление в запросе
,
0 Ilqarupup
 
14.03.15
18:29
Добрый день! Такой вопрос:
Как в запросе

ВЫБРАТЬ
            Заказы.Ссылка КАК Заказ,
            ВЫБОР
                КОГДА Заказы.Ссылка ЕСТЬ NULL
                    ТОГДА "Не закрыт"
                ИНАЧЕ ЕСТЬNULL(ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа, "Не указана")
            КОНЕЦ КАК ПричинаЗакрытияЗаказа
        ИЗ
            Документ.ЗаказПокупателя КАК Заказы
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗакрытиеЗаказовПокупателей.Заказы КАК ЗакрытиеЗаказовПокупателейЗаказы
                ПО (ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя = Заказы.Ссылка)
        ГДЕ
            Заказы.Дата >= &ДатаНач
            И Заказы.Дата <= &ДатаКон
        
        СГРУППИРОВАТЬ ПО
            Заказы.Ссылка,
            ВЫБОР
                КОГДА Заказы.Ссылка ЕСТЬ NULL
                    ТОГДА "Не закрыт"
                ИНАЧЕ ЕСТЬNULL(ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа, "Не указана")
            КОНЕЦ



а) проверить на то что заказ не закрыт и вывести соответствующюю запись
б) вывести строку "не указана" если не выбрана причина закрытия заказа, а также строку "не указана" если выбрана причина без наименования (есть такой элемент)
1 hhhh
 
14.03.15
18:34
ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя ЕСТЬ NULL
2 Ilqarupup
 
14.03.15
18:37
(1)да, точно
3 Ilqarupup
 
14.03.15
18:37
а как на пустое представление проверить? есть нулл не идет, потому что есть элемент с пустым наименованием в причине(
4 hhhh
 
14.03.15
18:42
ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа.Наименование = ""
5 zladenuw
 
14.03.15
18:44
поле = Значение(Справочник.ПричинаЗакрытияЗаказа.ПустаяСсылка)
6 zladenuw
 
14.03.15
18:45
(4) а блин. наименование пусто.....
7 Ilqarupup
 
14.03.15
19:52
сделал так:

ВЫБРАТЬ
            Заказы.Ссылка КАК Заказ,
            ВЫБОР
                КОГДА ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя ЕСТЬ NULL
                    ТОГДА "Не закрыт"
                КОГДА ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа.Код = "000000008"
                        ИЛИ ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа = ЗНАЧЕНИЕ(Справочник.ПричиныЗакрытияЗаказов.ПустаяССылка)
                    ТОГДА "Не указана"
                ИНАЧЕ ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа
            КОНЕЦ КАК ПричинаЗакрытияЗаказа
        ИЗ
            Документ.ЗаказПокупателя КАК Заказы
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗакрытиеЗаказовПокупателей.Заказы КАК ЗакрытиеЗаказовПокупателейЗаказы
                ПО (ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя = Заказы.Ссылка)
        ГДЕ
            Заказы.Дата >= &ДатаНач
            И Заказы.Дата <= &ДатаКон
            И Заказы.Организация = &Организация
        
        СГРУППИРОВАТЬ ПО
            Заказы.Ссылка,
            ВЫБОР
                КОГДА ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя ЕСТЬ NULL
                    ТОГДА "Не закрыт"
                КОГДА ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа.Код = "000000008"
                        ИЛИ ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа = ЗНАЧЕНИЕ(Справочник.ПричиныЗакрытияЗаказов.ПустаяССылка)
                    ТОГДА "Не указана"
                ИНАЧЕ ЗакрытиеЗаказовПокупателейЗаказы.ПричинаЗакрытияЗаказа
            КОНЕЦ
8 Ilqarupup
 
14.03.15
19:52
костыль конечно)
9 RomanYS
 
14.03.15
19:58
(8) замени
Код = "000000008"
на
Наименование = ""
будет выглядеть логичнее)
10 zladenuw
 
14.03.15
20:57
лучше уже параметр в запрос. что бы феншуй
11 zladenuw
 
14.03.15
21:01
(7) если по феншую. забуть "или" делай все через выбор когда. поймешь при работе с большими бд...