Имя: Пароль:
1C
1С v8
Подскажите с запросом полное соединение
,
0 DSSS
 
16.08.11
09:00
Доброго дня.
Есть 2 таблицы:
1-я таблица в табличной части справочника:
Спецификация  Номенклатура
СП1           Ном1  
СП1           Ном2
СП1           Ном3

2-я таблица в документе:
Спецификация  Номенклатура
СП1           Ном1  
СП1           Ном2

Нужно получить таблицу:
Спецификация  НоменклатураСпр НоменклатураДОК
СП1           Ном1            Ном1
СП2           Ном2            Ном2
СП3           Ном3            NULL

Подскажите, как изменить запрос, чтобы вернул таблицу в нужном виде?
Что нужно указать в условии соединения По номенклатура?

ВЫБРАТЬ
   Док.Спецификация,
   Док.Номенклатура КАК Док,
   Спр.Номенклатура КАК Спр
ИЗ
   Документ.ЗаказНаряд.Товары КАК Док
       ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СпецификацииТоваров.Спецификация КАК Спр
       ПО Док.Спецификация = Спр.Ссылка
           И Док.Номенклатура = Спр.Номенклатура
ГДЕ
   Док.Ссылка = &Ссылка
1 butterbean
 
16.08.11
09:04
откуда в первой колонке результата появились СП2 и СП3??
2 DSSS
 
16.08.11
09:05
(1) Блин, опечатка, везде СП1
3 bcel
 
16.08.11
09:07
возьми список спецификаций и к нему уже присоединяй номенклатуру и документы
4 butterbean
 
16.08.11
09:07
как сейчас выводит?
5 aleks-id
 
16.08.11
09:07
>>1-я таблица в табличной части справочника
вот тут поподробнее
6 DSSS
 
16.08.11
09:10
(4)
Сейчас выводит:
СП1           Ном1            Ном1
СП1           Ном2            Ном2
Неправильно срабатывает связь по номенклатуре, т.к. одна из номенклатур нуловая.

(5) Справочник спецификации, у него ТЧ номенклатура. В ТЧ документа колонки: номенклатура, спецификация.
7 aleks-id
 
16.08.11
09:12
ВЫБРАТЬ
   Спр.Спецификация КАК Специф,
   Спр.Номенклатура КАК СпрНом,
   Док.Номенклатура КАК Док
ИЗ
Справочник.СпецификацииТоваров.Спецификация КАК Спр    
       ЛЕВОЕ СОЕДИНЕНИЕ
       Документ.ЗаказНаряд.Товары КАК Док
       ПО Док.Спецификация = Спр.Ссылка
           И Док.Номенклатура = Спр.Номенклатура
ГДЕ
   Док.Ссылка = &Ссылка
8 Axel2009
 
16.08.11
09:14
(0) а чем не устраивает текущее соединение?
9 butterbean
 
16.08.11
09:15
(7) только  Док.Ссылка = &Ссылка в условие соединения и будет совсем хорошо
10 aleks-id
 
16.08.11
09:18
(9) пусть тс сам уже марафет на свой запрос наведет :)
11 DSSS
 
16.08.11
09:21
(7),(9) все равно 2 строки выводит

ВЫБРАТЬ
   Спр.Ссылка КАК Спецификация,
   Спр.Номенклатура КАК СпрНом,
   Док.Номенклатура КАК ДокНом
ИЗ
   Справочник.СпецификацииТоваров.Спецификация КАК Спр
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд.Товары КАК Док
       ПО Спр.Ссылка = Док.Спецификация
           И Спр.Номенклатура = Док.Номенклатура
ГДЕ
   Док.Ссылка = &Ссылка

(8) тем что выводит 2 строки вместо 3-х..
12 butterbean
 
16.08.11
09:23
(11) замени ГДЕ на И
13 Axel2009
 
16.08.11
09:26
(11) правое соединение пиши
14 Axel2009
 
16.08.11
09:27
(13)+фигню сказал =)
15 Креатив
 
16.08.11
09:35
(12) дело говорит у тебя условие ГДЕ отсекает строки.
16 DSSS
 
16.08.11
09:35
Вот рабочий вариант:

ВЫБРАТЬ
   ЗаказНарядТовары.Номенклатура КАК НоменклатураДок,
   ЗаказНарядТовары.Спецификация
ПОМЕСТИТЬ ТЧ
ИЗ
   Документ.ЗаказНаряд.Товары КАК ЗаказНарядТовары
ГДЕ
   ЗаказНарядТовары.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СпецификацииТоваровСпецификация.Номенклатура,
   СпецификацииТоваровСпецификация.Ссылка,
   ТЧ.НоменклатураДок
ИЗ
   Справочник.СпецификацииТоваров.Спецификация КАК СпецификацииТоваровСпецификация
       ЛЕВОЕ СОЕДИНЕНИЕ ТЧ КАК ТЧ
       ПО СпецификацииТоваровСпецификация.Ссылка = ТЧ.Спецификация
           И СпецификацииТоваровСпецификация.Номенклатура = ТЧ.НоменклатураДок
ГДЕ
   СпецификацииТоваровСпецификация.Ссылка В
           (ВЫБРАТЬ
               ТЧ.Спецификация
           ИЗ
               ТЧ КАК ТЧ)

Всем спасибо!
17 butterbean
 
16.08.11
09:38
ппц
18 Axel2009
 
16.08.11
10:59
и где он рабочий то?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан