|
Запрос | ☑ | ||
---|---|---|---|---|
0
SH_tan
05.09.14
✎
13:06
|
Добрый День Всем!!!
Проблема с запросом Есть документы Счет Расходная накладная Доставка Принято считать как только проведена Расходная накладная то можно считать что Доставка выполнена, но есть подвох могут быть Расходные накладные не проведенные - в этом случае Доставка не выполнена Как правильно в запросе поставить условие? |
|||
1
Apokalipsec
05.09.14
✎
13:07
|
Выбор
КОГДА РасходнаяНакладная.Проведен ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ |
|||
2
SH_tan
05.09.14
✎
13:12
|
(1) может что не правильно делаю но при этом у меня отсекаются доставки которые не выполнены
ВЫБРАТЬ Доставка.Ссылка КАК Доставка, Доставка.ДатаПодачи, Доставка.Контрагент, ВЫРАЗИТЬ(Доставка.Примечание КАК СТРОКА(200)) КАК Примечание, Доставка.Контрагент.Родитель.Менеджер КАК Менеджер, ВЫБОР КОГДА ЕСТЬNULL(РасходнаяНакладная.Ссылка, "Невыполнено") = РасходнаяНакладная.Ссылка ТОГДА "Выполненно" ИНАЧЕ "Невыполнено" КОНЕЦ КАК Статус ИЗ Документ.Доставка КАК Доставка ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная ПО Доставка.ДокументОснование = РасходнаяНакладная.ДокументОснование ГДЕ Доставка.Дата МЕЖДУ &ДатаНач И &ДатаКон И ВЫБОР КОГДА &Менеджер = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ Доставка.Контрагент.Родитель.Менеджер В (&Менеджер) КОНЕЦ И Доставка.Проведен = ИСТИНА И ВЫБОР КОГДА &Выполненые = ИСТИНА ТОГДА ВЫБОР КОГДА ЕСТЬNULL(РасходнаяНакладная.Ссылка, ЛОЖЬ) = РасходнаяНакладная.Ссылка ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНАЧЕ ИСТИНА КОНЕЦ И ВЫБОР КОГДА РасходнаяНакладная.Проведен = ИСТИНА ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ {ГДЕ Доставка.Контрагент.*, Доставка.Контрагент.Родитель.Менеджер.* КАК Менеджер} СГРУППИРОВАТЬ ПО Доставка.Ссылка, Доставка.ДатаПодачи, Доставка.Контрагент, ВЫРАЗИТЬ(Доставка.Примечание КАК СТРОКА(200)), Доставка.Контрагент.Родитель.Менеджер, ВЫБОР КОГДА ЕСТЬNULL(РасходнаяНакладная.Ссылка, "Невыполнено") = РасходнаяНакладная.Ссылка ТОГДА "Выполненно" ИНАЧЕ "Невыполнено" КОНЕЦ УПОРЯДОЧИТЬ ПО Доставка.Дата |
|||
3
Cube
05.09.14
✎
13:12
|
(1) А что, просто
РасходнаяНакладная.Проведен КАК Доставлено не комильфо? :) Ну и с заглушкой от NULL: ЕстьNULL(РасходнаяНакладная.Проведен, ЛОЖЬ) КАК Доставлено |
|||
4
Cube
05.09.14
✎
13:14
|
(2) "КОГДА ЕСТЬNULL(РасходнаяНакладная.Ссылка, ЛОЖЬ) = РасходнаяНакладная.Ссылка"
Красавчик чё... |
|||
5
SH_tan
05.09.14
✎
13:16
|
(4) я вот с этим Выбор когда еще не очень поэтому не пинайте сильно
|
|||
6
Apokalipsec
05.09.14
✎
13:16
|
(3) Комильфо и аккуратно, автору нагляднее просто пример.)
|
|||
7
SH_tan
05.09.14
✎
13:18
|
ВЫБРАТЬ
Доставка.Ссылка КАК Доставка, Доставка.ДатаПодачи, Доставка.Контрагент, ВЫРАЗИТЬ(Доставка.Примечание КАК СТРОКА(200)) КАК Примечание, Доставка.Контрагент.Родитель.Менеджер КАК Менеджер, РасходнаяНакладная.Проведен КАК Доставлено ИЗ Документ.Доставка КАК Доставка ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная ПО Доставка.ДокументОснование = РасходнаяНакладная.ДокументОснование ГДЕ Доставка.Проведен = ИСТИНА {ГДЕ Доставка.Контрагент.*, Доставка.Контрагент.Родитель.Менеджер.* КАК Менеджер} СГРУППИРОВАТЬ ПО Доставка.Ссылка, Доставка.ДатаПодачи, Доставка.Контрагент, ВЫРАЗИТЬ(Доставка.Примечание КАК СТРОКА(200)), Доставка.Контрагент.Родитель.Менеджер, РасходнаяНакладная.Проведен УПОРЯДОЧИТЬ ПО Доставка.Дата |
|||
8
Cube
05.09.14
✎
13:18
|
(5) Так читай (3) и пиши вместо
КОГДА ЕСТЬNULL(РасходнаяНакладная.Ссылка, ЛОЖЬ) = РасходнаяНакладная.Ссылка Это КОГДА ЕСТЬNULL(РасходнаяНакладная.Проведен, ЛОЖЬ) = ИСТИНА |
|||
9
SH_tan
05.09.14
✎
13:19
|
и тут возникают дубли
к примеру была Расходная проведенная и не проведенная соответственно строк две |
|||
10
SH_tan
05.09.14
✎
13:20
|
(8) ок
|
|||
11
Cube
05.09.14
✎
13:23
|
(9) Так конечно - та группируешь по полю РасходнаяНакладная.Проведен. Делай так:
ВЫБРАТЬ Доставка.Ссылка КАК Доставка, Доставка.ДатаПодачи, Доставка.Контрагент, ВЫРАЗИТЬ(Доставка.Примечание КАК СТРОКА(200)) КАК Примечание, Доставка.Контрагент.Родитель.Менеджер КАК Менеджер, МАКСИМУМ(ЕСТЬNULL(РасходнаяНакладная.Проведен, ЛОЖЬ)) КАК Доставлено ИЗ Документ.Доставка КАК Доставка ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная ПО Доставка.ДокументОснование = РасходнаяНакладная.ДокументОснование ГДЕ Доставка.Проведен = ИСТИНА {ГДЕ Доставка.Контрагент.*, Доставка.Контрагент.Родитель.Менеджер.* КАК Менеджер} СГРУППИРОВАТЬ ПО Доставка.Ссылка, Доставка.ДатаПодачи, Доставка.Контрагент, ВЫРАЗИТЬ(Доставка.Примечание КАК СТРОКА(200)), Доставка.Контрагент.Родитель.Менеджер УПОРЯДОЧИТЬ ПО Доставка.Дата |
|||
12
SH_tan
05.09.14
✎
13:28
|
(11) спасибо получилось
Максимум что дает можешь сказать? МАКСИМУМ(ЕСТЬNULL(РасходнаяНакладная.Проведен, ЛОЖЬ)) КАК Доставлено |
|||
13
Cube
05.09.14
✎
13:30
|
(12) Выбирает максимальное значение поля.
Истина = это единица (упрощенно) Ложь - это ноль. |
|||
14
Cube
05.09.14
✎
13:34
|
(12) Почитай в СП как работает метод Свернуть() у таблицы значений. Там есть группировочные поля и есть суммируемые поля. Вот в запросе можно у суммируемых полей указывать не только функцию СУММА(), но и другие - МАКСИМУМ(), МИНИМУМ(), КОЛИЧЕСТВО() и т.д.
|
|||
15
SH_tan
05.09.14
✎
13:39
|
(14) спасибо!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |