Имя: Пароль:
1C
1С v8
Вопрос для гуру СКД
0 Fragster
 
гуру
15.05.14
11:56
Есть СКД с запросом вида:


ВЫБРАТЬ
    "А" КАК Поле
ПОМЕСТИТЬ Т

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Б"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "В"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "А" КАК Поле,
    1 КАК Значение1
ПОМЕСТИТЬ Т1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Б" КАК Поле,
    1 КАК Значение2
ПОМЕСТИТЬ Т2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Поле,
    Т1.Значение1,
    Т2.Значение2
{ВЫБРАТЬ
    Поле,
    Значение1,
    Значение2}
ИЗ
    Т КАК Т
        {ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т1 КАК Т1
        ПО Т.Поле = Т1.Поле}
        {ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т2 КАК Т2
        ПО Т.Поле = Т2.Поле}


Сейчас работает  так: Выбираешь Поле - выводится все:
А
Б
В

дополнительно выбираешь Значение1 - выводится
А 1

вместо Значение1 выбираешь Значение2 - Выводится
Б 1

Выбираешь И Значение1 И Значение2 - ничего не выводится.
Как сделать так, чтобы в таком случае выводилось так:
А 1 _
Б _ 1

и при этом сохранилось поведение из текущего варианта, т.е. соединение только необходимых таблиц, ну и при выборе одного значения выводилось только то, что есть в соответствующей таблице
1 Fragster
 
гуру
15.05.14
12:16
Никто не понял, что надо или никто не может так сделать?
2 moonrun
 
15.05.14
12:33
(0)ВЫБРАТЬ
    "А" КАК Поле
ПОМЕСТИТЬ Т

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Б"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "В"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "А" КАК Поле,
    1 КАК Значение1
ПОМЕСТИТЬ Т1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Б" КАК Поле,
    1 КАК Значение2
ПОМЕСТИТЬ Т2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Поле КАК Поле,
    Т1.Значение1 КАК Значение1,
    Т2.Значение2 КАК Значение2
{ВЫБРАТЬ
    Поле,
    Значение1,
    Значение2}
ИЗ
    Т КАК Т
        {ЛЕВОЕ СОЕДИНЕНИЕ Т1 КАК Т1
        ПО Т.Поле = Т1.Поле}
        {ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК Т2
        ПО Т.Поле = Т2.Поле}
ГДЕ
    (ЕСТЬNULL(Т1.Значение1, "---") <> "---"
            ИЛИ ЕСТЬNULL(Т2.Значение2, "---") <> "---")
3 Fragster
 
гуру
15.05.14
12:48
(2) 1. Если выбрать только Поле, то выводится все равно только то, где есть Значение1 или Значение2

2. Всегда происходит соединение, т.е. не работает необязательность таблиц
4 mikecool
 
15.05.14
12:50
не совсем понял, но может попробовать сделать через разные источники данных, а не одним запросом?
5 Fragster
 
гуру
15.05.14
13:06
(4) как сделать через разные наборы?
6 Пеппи
 
15.05.14
13:10
(5) наверное все же через разные схемы. Соединение остается всегда
7 Fragster
 
гуру
15.05.14
13:49
(6) в варианте (0) соединение появляется только когда выбираешь поле из соответствующей таблицы
8 catena
 
15.05.14
13:51
(7)Тебе надо два соединения, а они противоречат друг другу.
9 echo77
 
15.05.14
14:39
(0) Схему выложи на файловый ресурс - я тебе скажу что надо сделать
10 Fragster
 
гуру
16.05.14
11:03
11 Fragster
 
гуру
16.05.14
11:04
(8) как сделать чтобы не противоречили?