Имя: Пароль:
1C
1С v8
NULL в запросе
,
0 Black Dragon
 
18.02.15
15:09
Доброго времени суток!

есть такой код:

    Для Каждого Док Из Метаданные["Документы"] Цикл
        Если Запрос.Текст <> "" Тогда
            Запрос.Текст = Запрос.Текст + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС;
        КонецЕсли;
        Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
        |    Документы.Ссылка КАК Ссылка
        |ИЗ
        |    Документ." + Док.Имя + " КАК Документы
        |    ЛЕВОЕ СОЕДИНЕНИЕ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения
        |    ПО Документы.Ссылка = Исключения.Документ
        |ГДЕ
        |    Документы.Дата < &ДатаСвертки
        |    И Документы.Дата > ДАТАВРЕМЯ(2009,1,1)
        |    И (Документы.Ссылка <> Исключения.Документ
        |    И Исключения.Документ ЕСТЬ НЕ NULL)";
    КонецЦикла;

Как победить сравнение ссылки с полем NULL?
1 Alexaha
 
18.02.15
15:10
НЕ Исключения.Документ ЕСТЬ NULL
2 Господин ПЖ
 
18.02.15
15:11
победить соединение
3 vicof
 
18.02.15
15:11
НЕ Исключение.Документ ЕСТЬ NULL
4 Black Dragon
 
18.02.15
15:11
(1) и (3) пробовал - не ОНО!
5 Black Dragon
 
18.02.15
15:12
(2) по соединению все правильно, так и должно быть, должен быть NULL в поле
6 Господин ПЖ
 
18.02.15
15:13
телепатирую... автору надо перенести условие в соединение
7 vicof
 
18.02.15
15:13
(5) Формулируй вопросы нормально
8 Stim
 
18.02.15
15:13
использовать конструкцию ЕСТЬNULL()
9 vicof
 
18.02.15
15:13
(6) +100500
10 salvator
 
18.02.15
15:14
ПО Документы.Ссылка = Исключения.Документ
И НЕ Исключения.Документ ЕСТЬ NULL
11 Господин ПЖ
 
18.02.15
15:14
(5) он и будет... сейчас ты кодом в (0) получаешь внутренее соединение
12 Stim
 
18.02.15
15:15
хрень какая-то, а не запрос.

что надо получить-то?
13 Black Dragon
 
18.02.15
15:15
суть такова, что при свертке базы есть некие доки-исключения, которые нельзя убивать(имеют подч доки в периоде после свертки). нужно отобрать запросом те доки, которые не являются исключениями
14 hhhh
 
18.02.15
15:16
(5) вот это что?

Документы.Ссылка = Исключения.Документ

и Документы.Ссылка <> Исключения.Документ ??

бредите?
15 Господин ПЖ
 
18.02.15
15:17
(14) извращается как может
16 vicof
 
18.02.15
15:17
(11)(14) Автор упорно не понимает запросы, ему месяца два назад про лево-внутреннее соединение два раза объясняли.
17 Stim
 
18.02.15
15:17
(13) а нельзя написать

Документы.Ссылка КАК Ссылка
        |ИЗ
        |    Документ." + Док.Имя + " КАК Документы
        |    ЛЕВОЕ СОЕДИНЕНИЕ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения
        |    ПО Документы.Ссылка = Исключения.Документ
        |ГДЕ
        |    Документы.Ссылка НЕ В (Выбрать Исключения.Ссылка ИЗ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения)
18 Stim
 
18.02.15
15:17
тьфу. т.е. без соединений вообще
19 Black Dragon
 
18.02.15
15:18
(14) а откуда вы знаете?
и в основном по ночам!

вот как надо было:

    Для Каждого Док Из Метаданные["Документы"] Цикл
        Если Запрос.Текст <> "" Тогда
            Запрос.Текст = Запрос.Текст + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС;
        КонецЕсли;
        Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
        |    Документы.Ссылка КАК Ссылка
        |ИЗ
        |    Документ." + Док.Имя + " КАК Документы
        |    ЛЕВОЕ СОЕДИНЕНИЕ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения
        |    ПО Документы.Ссылка = Исключения.Документ
        |ГДЕ
        |    Документы.Дата < &ДатаСвертки
        |    И Документы.Дата > ДАТАВРЕМЯ(2009,1,1)
        |    И Исключения.Документ ЕСТЬ NULL";
    КонецЦикла;
20 Black Dragon
 
18.02.15
15:19
ВСЕМ СПАСИБО за придание нужного направления мысли!
21 vicof
 
18.02.15
15:20
(20) Не за что. У тебя есть к кому стремиться: LivingStar
22 Господин ПЖ
 
18.02.15
15:20
(17) Документы.Ссылка НЕ В (Выбрать Исключения.Ссылка ИЗ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения)

с учетом что неизвестно что за документы по типам в ДОКИ_НЕ_УДАЛЯТЬ валяются - запрос раком не встанет из-за неявных соединений?
23 Black Dragon
 
18.02.15
15:21
(17) как это будет работать?
на каждом обходе выборки делать вложенный запрос?
24 Stim
 
18.02.15
15:21
(22) тогда
Документы.Ссылка НЕ В (Выбрать Исключения.Ссылка ИЗ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения ГДЕ Исключения Ссылка Документ." + Док.Имя + ")"
25 Black Dragon
 
18.02.15
15:22
(21) в чем суть? не понял чего-то!
26 vicof
 
18.02.15
15:23
(25) Забей)
27 Black Dragon
 
18.02.15
15:25
не приемлю как-то конструкции с вложенными запросами, особенно когда они в условии
одно дело когда в источнике, да и то на читаемость запроса плохо влияет!
28 Black Dragon
 
18.02.15
15:26
чем ВТ плохи? один раз сформировал и пользуйся хоть 100 раз!
29 Stim
 
18.02.15
15:30
(27) ага. а левые соединения с кучей документов типа лучше?
а сабж в 24 - это обращение к ВТ, если чо
30 Stim
 
18.02.15
15:30
+ учи матчасть
31 Black Dragon
 
18.02.15
15:31
там слово "ВЫБРАТЬ" есть, остальное уже прилагается)
32 Stim
 
18.02.15
15:33
любишь соединять - тогда пиши

ЛЕВОЕ СОЕДИНЕНИЕ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения
        |    ПО Документы.Ссылка = Исключения.Документ
        |    И  Исключения.Документ Ссылка МойТипДокумента
33 eklmn
 
гуру
18.02.15
15:33
(21) да нее, автор еще норм, быстро разобрался, тот вообще издец
34 Stim
 
18.02.15
15:35
+ и зачем используешь
." + Док.Имя + "

пиши

| ИЗ &ДокументМД КАК Документы
..

Запрос.Текст = СтрЗаменить(Запрос.Текст,&ДокументМД,"Документ."+Док.Имя);

так по крайней мере и читабельнее и конструктором можно поработать
35 trad
 
18.02.15
15:37
(13)
        |ИЗ
        |    Документ." + Док.Имя + " КАК Документы
        |    ЛЕВОЕ СОЕДИНЕНИЕ ДОКИ_НЕ_УДАЛЯТЬ КАК Исключения
        |    ПО Документы.Ссылка = Исключения.Документ
        |ГДЕ
        |    Документы.Дата < &ДатаСвертки
        |    И Документы.Дата > ДАТАВРЕМЯ(2009,1,1)
        |    И Исключения.Документ ЕСТЬ NULL