Имя: Пароль:
1C
1С v8
Вопрос по Левому соединению
0 3axap_4
 
17.09.13
12:21
Добра.
Есть запрос

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка
ПОМЕСТИТЬ Табл
ИЗ
    БизнесПроцесс.CRM_АгентскаяСхема КАК CRM_АгентскаяСхема
        ЛЕВОЕ СОЕДИНЕНИЕ Задача.Задача_Агентская_Схема КАК Задача_Агентская_Схема
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
            ПО Задача_Агентская_Схема.ОбъектДействие = РеализацияТоваровУслуг.Сделка
        ПО CRM_АгентскаяСхема.Ссылка = Задача_Агентская_Схема.БизнесПроцесс
            И (Задача_Агентская_Схема.Выполнена)
ГДЕ
    CRM_АгентскаяСхема.Основание = &Основание
    И Задача_Агентская_Схема.ТочкаМаршрута = &Этап3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Табл.Ссылка КАК Документ
ИЗ
    Задача.Задача_Агентская_Схема.СписокДокументов КАК Задача_Агентская_СхемаСписокДокументов
        ЛЕВОЕ СОЕДИНЕНИЕ Табл КАК Табл
        ПО (Задача_Агентская_СхемаСписокДокументов.Ссылка.Выполнена)
            И (Задача_Агентская_СхемаСписокДокументов.Ссылка.ТочкаМаршрута = &Этап2)
            И (ЕСТЬNULL(Задача_Агентская_СхемаСписокДокументов.Документ.Ссылка, &ПустаяСсылка) <> Табл.Ссылка)
ГДЕ
    (НЕ Табл.Ссылка ЕСТЬ NULL )

СГРУППИРОВАТЬ ПО
    Табл.Ссылка


Как в слачае если во втором пакете таблица Задача_Агентская_СхемаСписокДокументов пустая перетянуть значения из таблицы первого пакета?

Спасиб
1 Rie
 
17.09.13
12:23
(0) ЕСТЬNULL - замечательная функция...
2 cw014
 
17.09.13
12:25
Внутреннее соединение у тебя, а не левое
3 3axap_4
 
17.09.13
12:32
(2) Внутреннее тоже не помогает
4 exwill
 
17.09.13
12:37
(3) Тогда - правое соединение или ...
левое, но с перестановкой таблиц.
5 3axap_4
 
17.09.13
12:42
(4) но тогда будут попадать все записи из таблицы первого пакета, а мне нужны только те которые есть в таблице первого пакета и нет в таблице второго, соответственно если таблица второго пакета пуста, должны отбираться все записи из таблицы первого пакета
6 catena
 
17.09.13
12:43
(5) либо тут:
" (НЕ Табл.Ссылка ЕСТЬ NULL ) "
либо тут:
"и нет в таблице второго"

ты врешь.
7 exwill
 
17.09.13
12:44
(5) Добавь условие на NULL.
8 3axap_4
 
17.09.13
12:45
(6)(НЕ Табл.Ссылка ЕСТЬ NULL ) фильтрует null's из первыой таблицы, удаление этого пункта из запроса на результат не влияет
9 3axap_4
 
17.09.13
12:46
(7) куда?
10 exwill
 
17.09.13
12:52
(9)
1. Меняй таблицы местами или ставь ПРАВОЕ соединение.
2. Ставь условие типа: Задача.Задача_Агентская_Схема.СписокДокументов.Поле ЕСТЬ NULL
11 catena
 
17.09.13
13:02
(8)При левом соединении у тебя в первой таблице не может быть NULL-ов.
12 3axap_4
 
17.09.13
13:21
(11) таблица из второго пакета может быть пустой, в этом случае не получается соеденение с таблицей из первого пакета, значения которой по идее должны полностью перенестись
13 3axap_4
 
17.09.13
13:48
(10) поставил, но там не null видимо, левое соединение нормально отрабатывает если в таблице второго пакета есть хоть одна запись
14 IKSparrow
 
17.09.13
14:31
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ... ВЫБРАТЬ РАЗЛИЧНЫЕ ... из левой таблицы.
15 3axap_4
 
17.09.13
15:16
(14) Не пошло...
16 catena
 
17.09.13
15:27
(15)Подожди, а это что за условие???

И (ЕСТЬNULL(Задача_Агентская_СхемаСписокДокументов.Документ.Ссылка, &ПустаяСсылка) <> Табл.Ссылка)
17 3axap_4
 
17.09.13
15:33
(16) это я практиковался, выложил промежуточную версию запроса=) сейчас без него.... но все равно не пашетъ
18 Sabbath
 
17.09.13
15:43
(0) Не совсем задача и формулировки ясны, если честно. Как-т осумбурно.
Напиши пример: есть две таблицы (результата запроса) с такими-то полями, нужно получить то-то
19 catena
 
17.09.13
15:50
(17)Если совсем без него, то у тебя логично хоть одна запись второй таблицы(подходящая по условиям) распространиться на все записи первой. Разберись, по каким реквизитам должна связь стоять.
20 3axap_4
 
17.09.13
16:06
(18)(19) есть 2 таблицы:
1 - отбраются РТУ (тип ссылка)
2 - отбираются РТУ из табличной части задачи бизнес процесса (тип ссылка).

делаю левое соединение по полю (тип ссылка РТУ) нужно отобрать РТУ которые не фигурировали в завершенных задачах бизнес процесса на определенном этапе.

в моем случае получается если РТУ не фигурировали, то 2-я таблица получается пустой и при левом соединении из первой не перетягиваются нужные значения.
21 Sabbath
 
17.09.13
16:19
(20) по идее тебе надо сначала получить то, что фигурировало, и уже это, соединить по ссылке и в условии прописать есть null, либо сразу в условие к первой таблице поставить
НЕ В (выбрать ... тут то, что фигурирует в задачах на определенном этапе).
22 3axap_4
 
17.09.13
16:46
(21) 100%%
Спасибо!
Независимо от того, куда вы едете — это в гору и против ветра!