Имя: Пароль:
1C
1С v8
Исключить в первом запросе данные из второго запроса
0 dark70
 
02.06.21
18:15
Надо вытащить Контрагентов у которых расторгнуты договора. Т.е. дата окончания договора может быть 31.06.21, а дата расторжения 10.06.21
В таком случае если выбрана НачДата = 02.06.21, то в выборке этот Контрагент должен быть.

Запрос = Новый Запрос;
    Расторгнутые = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = Расторгнутые;
    
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    АР_СтатусыОбъектовАрендыСрезПоследних.Договор КАК Договор
        |ПОМЕСТИТЬ Расторгнутые
        |ИЗ
        |    РегистрСведений.АР_СтатусыОбъектовАренды.СрезПоследних(
        |            ,
        |            Услуга В (&МассивУслуг)
        |                И ДатаОкончанияАренды < &НачДата
        |                И Статус = &ВАренде) КАК АР_СтатусыОбъектовАрендыСрезПоследних
        |ГДЕ
        |    ВЫБОР
        |            КОГДА &КоличествоВМассиве = 0
        |                ТОГДА ИСТИНА
        |            ИНАЧЕ АР_СтатусыОбъектовАрендыСрезПоследних.Договор.Владелец В (&МассивКонтрагентов)
        |        КОНЕЦ
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    АР_СтатусыОбъектовАрендыСрезПоследних.Договор.Владелец КАК Контрагент
        |ИЗ
        |    РегистрСведений.АР_СтатусыОбъектовАренды.СрезПоследних(
        |            ,
        |            Услуга В (&МассивУслуг)
        |                И ДатаОкончанияАренды >= &НачДата
        |                И Статус = &ВАренде) КАК АР_СтатусыОбъектовАрендыСрезПоследних,
        |    Расторгнутые КАК Расторгнутые
        |ГДЕ
        |    ВЫБОР
        |            КОГДА &КоличествоВМассиве = 0
        |                ТОГДА ИСТИНА
        |            ИНАЧЕ АР_СтатусыОбъектовАрендыСрезПоследних.Договор.Владелец В (&МассивКонтрагентов)
        |        КОНЕЦ
        |    И НЕ АР_СтатусыОбъектовАрендыСрезПоследних.Договор В
        |                (ВЫБРАТЬ
        |                    Расторгнутые.Договор
        |                ИЗ
        |                    Расторгнутые)";

У меня же в выборке пусто.
Хотя если по отдельности к консоли, то все правильно.
1 mikecool
 
02.06.21
18:26
левое соединение
...
Где справа есть нулл
2 dark70
 
02.06.21
18:46
АР_СтатусыОбъектовАрендыСрезПоследних_1 - сюда должны попадать все договора у которых ДатаОкончанияАренды >= &НачДата
АР_СтатусыОбъектовАрендыСрезПоследних_2 - сюда должны попадать все договора у которых ДатаОкончанияАренды <= &НачДата
А уже в результат запроса должны попасть договора которые есть в СрезПоследних_1, но их нету в СрезПоследних_2

Может не правильно понял ?

ВЫБРАТЬ РАЗЛИЧНЫЕ
    АР_СтатусыОбъектовАрендыСрезПоследних_1.Договор.Владелец КАК Контрагент
ИЗ
    РегистрСведений.АР_СтатусыОбъектовАренды.СрезПоследних(
            ,
            Услуга В (&МассивУслуг)
                И ДатаОкончанияАренды >= &НачДата
                И Статус = &ВАренде) КАК АР_СтатусыОбъектовАрендыСрезПоследних_1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АР_СтатусыОбъектовАренды.СрезПоследних(
                ,
                Услуга В (&МассивУслуг)
                    И ДатаОкончанияАренды < &НачДата
                    И Статус = &ВАренде) КАК АР_СтатусыОбъектовАрендыСрезПоследних_2
        ПО (АР_СтатусыОбъектовАрендыСрезПоследних_2.Договор ЕСТЬ NULL)
ГДЕ
    ВЫБОР
            КОГДА &КоличествоВМассиве = 0
                ТОГДА ИСТИНА
            ИНАЧЕ АР_СтатусыОбъектовАрендыСрезПоследних_1.Договор.Владелец В (&МассивКонтрагентов)
        КОНЕЦ
    И ВЫБОР
            КОГДА &КоличествоВМассиве = 0
                ТОГДА ИСТИНА
            ИНАЧЕ АР_СтатусыОбъектовАрендыСрезПоследних_2.Договор.Владелец В (&МассивКонтрагентов)
        КОНЕЦ


Но нифига не работает :(
3 dark70
 
02.06.21
19:52
Все, получилось. Спасибо.
Пришлось перенести условие из
ГДЕ
    ВЫБОР
            КОГДА &КоличествоВМассиве = 0
                ТОГДА ИСТИНА
            ИНАЧЕ АР_СтатусыОбъектовАрендыСрезПоследних_1.Договор.Владелец В (&МассивКонтрагентов)
        КОНЕЦ
    И ВЫБОР
            КОГДА &КоличествоВМассиве = 0
                ТОГДА ИСТИНА
            ИНАЧЕ АР_СтатусыОбъектовАрендыСрезПоследних_2.Договор.Владелец В (&МассивКонтрагентов)
        КОНЕЦ

в
РегистрСведений.АР_СтатусыОбъектовАренды.СрезПоследних(
        |            ,
        |            Услуга В (&МассивУслуг)
        |                И ДатаОкончанияАренды >= &НачДата
        |                И Статус = &ВАренде
        |                И ВЫБОР
        |                    КОГДА &КоличествоВМассиве = 0
        |                        ТОГДА ИСТИНА
        |                    ИНАЧЕ Договор.Владелец В (&МассивКонтрагентов)
        |                КОНЕЦ)
Независимо от того, куда вы едете — это в гору и против ветра!