Имя: Пароль:
1C
1С v8
v8: Условный выбор поля в запросе
0 iceman2112
 
09.01.12
15:30
Нужно выбирать сотрудников и их адрес, если адреса не задан то пусто
Вот запрос:
ВЫБРАТЬ
   СотрудникиОрганизаций.Наименование,
   КонтактнаяИнформация.Представление
ИЗ
   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО СотрудникиОрганизаций.Ссылка = КонтактнаяИнформация.Объект
ГДЕ
   КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)

Сейчас он если нет адреса то не включает этого сотрудника в выборку вообще.
1 Kreont
 
09.01.12
15:31
А надо : ЛЕВОЕ
2 iceman2112
 
09.01.12
15:31
ВЫБРАТЬ
   СотрудникиОрганизаций.Наименование,
   КонтактнаяИнформация.Представление
ИЗ
   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО СотрудникиОрганизаций.Ссылка = КонтактнаяИнформация.Объект
ГДЕ
   КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)


все равно такой же результат
3 Kreont
 
09.01.12
15:34
или
   КонтактнаяИнформация.Тип ЕСТЬ NULL
4 iceman2112
 
09.01.12
15:51
а при чем тут .Тип?
5 Kreont
 
09.01.12
15:55
Соединение двух таблиц, если адресов нету, то в таблице РегистрСведений.КонтактнаяИнформация, уж тем более нету информации о "КонтактнаяИнформация.Тип" из условия "ГДЕ" в запросе, поскольку получается что самой целой 2-ой таблици нету, как то так :)
6 hhhh
 
09.01.12
15:55
(4) ну вы пишете

ГДЕ
   КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ ...

а с какого это бодуна у вас тип будет равен этому значению?
ясно, что он по-любому NULL.
7 iceman2112
 
09.01.12
15:58
без условия работает. А как тогда быть, если мне нужно выбрать адреса, он же все будет выбирать?
8 PVV65
 
09.01.12
15:59
(6) Это ты чойто придумал.
9 Ненавижу 1С
 
гуру
09.01.12
15:59
ПО СотрудникиОрганизаций.Ссылка = КонтактнаяИнформация.Объект
И
   КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
10 iceman2112
 
09.01.12
16:01
да работает, спасибо!
11 rs_trade
 
09.01.12
16:01
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО (СотрудникиОрганизаций.Ссылка = КонтактнаяИнформация.Объект И    КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
12 Kreont
 
09.01.12
16:01
(9) если адреса нету то не попадет в результат "целый" сотрудник
13 rs_trade
 
09.01.12
16:08
(12) попадание сотрудника при левом джойне ограничевается только условием ГДЕ
14 iceman2112
 
09.01.12
16:16
Это я понял, спасибо