Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Отчет по документам в связке

Отчет по документам в связке
Я
   suharik
 
28.04.18 - 11:29
Добрый день. Не подскажите Если я делаю отчет по ПоступлениеДопРасходов и ПоступлениеТоваровУслуг. При формировании отчета выводятся только те документы ПоступлениеТоваровУслуг, у которых есть в структуре ПоступлениеДопРасходов. А как вывести все документы ПоступлениеТоваровУслуг, но если к ним не привязан ПоступлениеДопРасходов чтобы выводилась надпись документ не обнаружен?

Я делаю так:

ВЫБОР
    КОГДА ПоступлениеДопРасходов.Ссылка = NULL
        ТОГДА "Документ не обнаружен"
    ИНАЧЕ ПоступлениеДопРасходов.Ссылка
КОНЕЦ
 
 
   Ненавижу 1С
 
1 - 28.04.18 - 11:30
КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
   Cool_Profi
 
2 - 28.04.18 - 11:30
@ПоступлениеДопРасходов.Ссылка = NULL@
Кто же так делает-то?
   Ненавижу 1С
 
3 - 28.04.18 - 11:31
или даже вместо всего этого:

ЕСТЬNULL(ПоступлениеДопРасходов.Ссылка,"Документ не обнаружен")
   suharik
 
4 - 28.04.18 - 11:39
Видимо дело не только в условии, не работает ЕСТЬ NULL

ВЫБРАТЬ
    ВЫБОР
        КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
            ТОГДА "Документ не обнаружен"
        ИНАЧЕ ПоступлениеДопРасходов.Ссылка
    КОНЕЦ КАК ДокДР,
    ПоступлениеТоваровУслуг.Ссылка КАК ДокПТ,
    ВЫБОР
        КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
            ТОГДА 0
        ИНАЧЕ ПоступлениеДопРасходов.СуммаДокумента
    КОНЕЦ КАК СуммаДокДР,
    ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокПТ
ИЗ
    Документ.ПоступлениеДопРасходов КАК ПоступлениеДопРасходов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        ПО ПоступлениеДопРасходов.Товары.ДокументПартии = ПоступлениеТоваровУслуг.Ссылка
ГДЕ
    ПоступлениеДопРасходов.Проведен = ИСТИНА
    И ПоступлениеТоваровУслуг.Проведен = ИСТИНА
   suharik
 
5 - 28.04.18 - 11:40
(2) ну уж извиняйте, как умеем :)
   suharik
 
6 - 02.05.18 - 10:20
Нарооод, нет больше вариантов? ну хоть куда копать?
   DrShad
 
7 - 02.05.18 - 10:32
(4) какой ужас
   DrShad
 
8 - 02.05.18 - 10:34
КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL

ты действительно думаешь, что в твоем запросе это условие когда-нибудь выполнится?
   Cyberhawk
 
9 - 02.05.18 - 11:06
Вот это тебе все портит: ПоступлениеДопРасходов.Проведен = ИСТИНА
   Cyberhawk
 
10 - 02.05.18 - 11:07
Добавь к нему через ИЛИ условие на НУЛЛ
 
 Рекламное место пустует
   suharik
 
11 - 02.05.18 - 13:57
(10) спасибо, попробую
   suharik
 
12 - 02.05.18 - 13:58
(8) ну фиг знает, я в уме обрабатывать запросы не умею.
   hhhh
 
13 - 02.05.18 - 14:29
(12) null бывает в левом соединении поэтому и без обработки в уме понятно.видишь левое соединение,значит там Null. А еслиу тебя поступлениеДопРасходов без левого соединения, то хоть головой о стенку бейся, null ты не получишь
   b_ru
 
14 - 02.05.18 - 14:53
В (1) не совсем правда. В большинстве диалектов SQL NULL не равен NULL, как и положено по определению этого самого нула, но в 1Совском равен. Но лучше, конечно же, писать как в (1)

А проблема в том, что у тебя в предложении ГДЕ наложено условие на вторую таблицу, а ведь там не будет Проведен = ИСТИНА, там будет Проведен = NULL

Правильно будет так:
ВЫБРАТЬ
    ВЫБОР
        КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
            ТОГДА "Документ не обнаружен"
        ИНАЧЕ ПоступлениеДопРасходов.Ссылка
    КОНЕЦ КАК ДокДР,
    ПоступлениеТоваровУслуг.Ссылка КАК ДокПТ,
    ВЫБОР
        КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
            ТОГДА 0
        ИНАЧЕ ПоступлениеДопРасходов.СуммаДокумента
    КОНЕЦ КАК СуммаДокДР,
    ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокПТ
ИЗ
    Документ.ПоступлениеДопРасходов КАК ПоступлениеДопРасходов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        ПО ПоступлениеДопРасходов.Товары.ДокументПартии = ПоступлениеТоваровУслуг.Ссылка
    И ПоступлениеТоваровУслуг.Проведен = ИСТИНА
ГДЕ
    ПоступлениеДопРасходов.Проведен = ИСТИНА

   b_ru
 
15 - 02.05.18 - 14:54
точнее даже ПТУ и ПДР надо поменять местами в соединении, а то у тебя будут выводиться все ПДР, не зависимо от ПТУ.
   ВРедная
 
16 - 02.05.18 - 15:49
(12) А как ты вообще работаешь то тогда? Если в уме запросы выполнять не умеешь?

Нужно же представить сначала, что ты получаешь, потом уже запрос писать.

У тебя сейчас так:
Беру все документы "доп расходы"
Привязываю к ним документы поступления по ссылке (только те документы поступления, ссылка на которые есть в доп расходах).

Как в этой схеме появятся поступления, к которым не создан доп расход?
   suharik
 
17 - 03.05.18 - 04:51
(16) методом тыка :)
ну так то оно так, только в реализации нет ссылки на доп расход, чтобы сделать иначе. Ну или я не нашел.
   suharik
 
18 - 03.05.18 - 04:56
(14) Видимо все таки как и сказал(а) (16) нельзя увидеть то что уже есть из того чего нет :) ну или как то так.
Надо именно от поступления плясать как то
   suharik
 
19 - 03.05.18 - 06:47
Нашел я где привязка, ну или по крайней мере должна быть там, но почему то она вообще ничерта не дает. Даже простой запрос показывает только документы прихода. Реквизит Сделка имеет сборную солянку из кучи других документов, и без условий отбора по сути должен показывать ВСЕ, но опять пустота.

ВЫБРАТЬ
    ПоступлениеТоваровУслуг.Ссылка КАК ДокПТ,
    ПоступлениеТоваровУслуг.Дата КАК Дата,
    ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаПТ,
    ПоступлениеТоваровУслуг.Сделка КАК ДокДР,
    ПоступлениеТоваровУслуг.Сделка.СуммаДокумента КАК СуммаДр
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ
    ПоступлениеТоваровУслуг.Проведен = ИСТИНА

УПОРЯДОЧИТЬ ПО
    ДокПТ
   suharik
 
20 - 03.05.18 - 09:27
К сожалению ничего умнее вот этого не придумал. Всем спасибо за помощь.
ВЫБРАТЬ
    ПоступлениеТоваровУслуг.Ссылка КАК ДокПТ,
    ПоступлениеТоваровУслуг.Дата КАК Дата,
    ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаПТ,
    ВЫБОР
        КОГДА ВложенныйЗапрос.ДокДР.Ссылка ЕСТЬ NULL
            ТОГДА "Документ не создан"
        ИНАЧЕ ВложенныйЗапрос.ДокДР.Ссылка
    КОНЕЦ КАК ДокДР,
    ВложенныйЗапрос.СуммаДокДР КАК СуммаДР
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВЫБОР
                КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
                    ТОГДА "Документ не обнаружен"
                ИНАЧЕ ПоступлениеДопРасходов.Ссылка
            КОНЕЦ КАК ДокДР,
            ПоступлениеТоваровУслуг.Ссылка КАК ДокПТ,
            ВЫБОР
                КОГДА ПоступлениеДопРасходов.Ссылка ЕСТЬ NULL
                    ТОГДА 0
                ИНАЧЕ ПоступлениеДопРасходов.СуммаДокумента
            КОНЕЦ КАК СуммаДокДР
        ИЗ
            Документ.ПоступлениеДопРасходов КАК ПоступлениеДопРасходов
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                ПО ПоступлениеДопРасходов.Товары.ДокументПартии = ПоступлениеТоваровУслуг.Ссылка
                    И (ПоступлениеТоваровУслуг.Проведен = ИСТИНА)
        ГДЕ
            ПоступлениеДопРасходов.Проведен = ИСТИНА) КАК ВложенныйЗапрос
        ПО ПоступлениеТоваровУслуг.Ссылка = ВложенныйЗапрос.ДокПТ.Ссылка
ГДЕ
    ПоступлениеТоваровУслуг.Проведен = ИСТИНА

УПОРЯДОЧИТЬ ПО
    ДокПТ

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует