Имя: Пароль:
1C
1С v8
Условия на связь таблиц (ЗУП 8.1) - сотрудники и контактная информация
,
0 vechiy
 
09.09.11
17:48
Помогите решить следующую задачку:
нужно вывести сотрудников и некоторые виды их контактной информации.
Проблема возникает, если у какого-то сотрудника нет какого-то вида контактов - не выводится полностью строка по сотруднику, поскольку таблицы сотрудников и контактов связаны(левым соединением).
Соединял по-другому - проблема осталась.
Как вывести всех сотрудников, независимо от наличия у них определенных видов контактов?
1 Beduin
 
09.09.11
17:50
(0) Что значит "если у какого-то сотрудника нет какого-то вида контактов - не выводится полностью строка по сотруднику"
Как это не выводится полностью?
2 На стороне добра
 
09.09.11
17:55
запрос покажи
3 vechiy
 
09.09.11
17:56
рег.сведений "работники организаций" соединен с рег.сведений "контактная информация"
у контактной информации есть тип - телефон, мэйл и вид - домашний телефон, служебный, и т.д.
Нужно вывести несколько разных контактов. Если хоть один отсутствует - строка, получается, не удовлетворяет условиям и не выводится
4 vechiy
 
09.09.11
17:57
ВЫБРАТЬ
   КонтактнаяИнформация.Объект,
   КонтактнаяИнформация.Тип,
   КонтактнаяИнформация.Вид,
   КонтактнаяИнформация.Представление,
   РаботникиОрганизаций.Сотрудник
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ПО (РаботникиОрганизаций.Сотрудник.Физлицо = КонтактнаяИнформация.Объект)
ГДЕ
   РаботникиОрганизаций.Сотрудник = &Сотрудник
   И КонтактнаяИнформация.Вид = &ВидКонтИнформации
5 guitar_player
 
09.09.11
17:57
условия в ГДЕ? перенеси условия в соединения связи
6 guitar_player
 
09.09.11
17:57
И КонтактнаяИнформация.Вид = &ВидКонтИнформации
7 guitar_player
 
09.09.11
17:57
вот это
8 Beduin
 
09.09.11
17:57
(4) Слева наверно таблица сотрудников должна быть
9 vechiy
 
09.09.11
17:58
(5) пробовал, не получилось. МОжет, не правильно условия описывал
10 guitar_player
 
09.09.11
17:58
(4) ну и конечно к работникам нужно контактную информацию левым присоединять, а не наоборот
11 almar
 
09.09.11
17:59
(4) Наоборот надо

ВЫБРАТЬ
*
ИЗ Справочник.Сотрудники
ЛевоеСоединение
РегистрСведений.КонтактнаяИнформация
12 На стороне добра
 
09.09.11
17:59
в (10) и (5) правильный ответ )
13 guitar_player
 
09.09.11
17:59
ВЫБРАТЬ
   КонтактнаяИнформация.Объект,
   КонтактнаяИнформация.Тип,
   КонтактнаяИнформация.Вид,
   КонтактнаяИнформация.Представление,
   РаботникиОрганизаций.Сотрудник
ИЗ
   РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО (РаботникиОрганизаций.Сотрудник.Физлицо = КонтактнаяИнформация.Объект
И КонтактнаяИнформация.Вид = &ВидКонтИнформации)
ГДЕ
   РаботникиОрганизаций.Сотрудник = &Сотрудник
14 Beduin
 
09.09.11
18:00
(4)  И КонтактнаяИнформация.Вид = &ВидКонтИнформации
А это условие нужно убрать. Иначе когда строчка с пустым видом получится то она выпадет из запроса.
15 vechiy
 
09.09.11
18:00
ВЫБРАТЬ
   КонтактнаяИнформация.Объект,
   КонтактнаяИнформация.Тип,
   КонтактнаяИнформация.Вид,
   КонтактнаяИнформация.Представление,
   РаботникиОрганизаций.Сотрудник
ИЗ
   РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО РаботникиОрганизаций.Сотрудник.Физлицо = КонтактнаяИнформация.Объект
           И (КонтактнаяИнформация.Вид = &ВидКонтИнформации)
ГДЕ
   РаботникиОрганизаций.Сотрудник = &Сотрудник

вот так получилось, спасибо! :)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.