Переключение на Главную Страницу Страницы: [1] 2 3 4 ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите с соединениями (число прочтений - 14755 )
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Помогите с соединениями
15. Ноября 2007 :: 07:22
Печать  
Есть запрос по регистру Остатки. В нем делают движения много документов. По этим документам нужно вытащить Клиента, но не во всех документах есть это поле. Пытался создать соединения по тем документам у которых это поле есть, но когда я делаю хотя бы одно соединения, сразе же происходит фильтр.
КОД:
|Select
|      Жур.IDDOC as [Док $Документ]
|      ,Жур.IDDOCDEF as Док_вид
|      ,Sum(Рег.СуммаГРНПриход) as ПрихСумГРН          
|      ,Sum(Рег.НаценкаПриход) as ПрихСумНац
|      ,Sum(Рег.СуммаГРНРасход) as РасхСумГРН
|      ,Sum(Рег.НаценкаРасход) as РасхСумНац "+Групин+"
|From
|      $РегистрОстаткиОбороты.Остатки(:ДатаС, :ДатаПо~,Документ,Движения,
|      ,Фирма=:выбФирма and ВидУчета=:сВидУчета"+Пер2+"
|      ,(Фирма,ВидУчета,ТМЦ,Склад),(СуммаГрн,СуммаБезНДС,Наценка)) AS Рег
|Inner JOIN
|      _1SJOURN AS Жур (nolock) ON Рег.ПозицияДокумента  = Жур.DATE_TIME_IDDOC
|Inner JOIN
|      $Справочник.ТМЦ AS СпрТ (nolock) ON СпрТ.ID  = Рег.ТМЦ
|Right Outer JOIN
|      $Документ.ПриходнаяНакладная  ДПН (nolock) on (ДПН.IDDOC = Жур.IDDOC)

|Group by  
|      Жур.IDDOC, Жур.IDDOCDEF";
Как правильно написать соединение, чтобы он пропускал и остальные документы
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #1 - 15. Ноября 2007 :: 07:26
Печать  
LEFT JOIN
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #2 - 15. Ноября 2007 :: 07:36
Печать  
Все получилось, только не пойму почему так. Заранее не направляй на Инфу.  Ее я уже читал
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #3 - 15. Ноября 2007 :: 07:41
Печать  
NickAn писал(а) 15. Ноября 2007 :: 07:36:
Все получилось, только не пойму почему так. Заранее не направляй на Инфу.  Ее я уже читал


Либо плохо читал, либо непонял Улыбка
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #4 - 15. Ноября 2007 :: 07:42
Печать  
Ну все равно СПАСИБО
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #5 - 15. Ноября 2007 :: 07:49
Печать  
Есть продолжение
Код
Выбрать все
|Select
	|	MAX(CONVERT(varchar(30), Case
	|	When Жур.IDDOCDEF=$ВидДокумента36.ПриходнаяНакладная Then СпрК.ID
	|	When Жур.IDDOCDEF=$ВидДокумента36.ВозвратнаяНакладная Then СпрК.ID
	|	When Жур.IDDOCDEF=$ВидДокумента36.РозничнаяНакладная Then СпрК.ID
	|	When Жур.IDDOCDEF=$ВидДокумента36.ВозвратПоставщику Then СпрК.ID
	|	When Жур.IDDOCDEF=$ВидДокумента36.РасходнаяНакладная Then СпрК.ID
	|	When Жур.IDDOCDEF=$ВидДокумента36.ПереоценкаТМЦ Then 'Акт переоценки'
	|	When Жур.IDDOCDEF=$ВидДокумента36.ОстаткиТМЦ Then 'Акт списания'
	|	When Жур.IDDOCDEF=$ВидДокумента36.ПеремещениеРасход Then $ДПР.Откуда
	|	When Жур.IDDOCDEF=$ВидДокумента36.ПеремещениеПриход Then $ДПП.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента36.СторнированиеДокумента Then 'Сторнирование'
	|	Else 'Нет кл' End)) as Клиент 


Ошибка: Syntax error converting the varchar value '  UM' to a column of data type int.
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #6 - 15. Ноября 2007 :: 08:09
Печать  
Можно ли вообще "MAX" применять для строковых данных или у меня не правильно convert работает?
  
Наверх
 
IP записан
 
semka49
Junior Member
**
Отсутствует


а что такое 1с?

Сообщений: 16
Местоположение: Москва
Зарегистрирован: 15. Ноября 2007
Пол: Женский
Re: Помогите с соединениями
Ответ #7 - 15. Ноября 2007 :: 08:11
Печать  
А помогите пжлста с запросом

     |SELECT
     |      $ДокС.ВидДвижения as [ВидДвижения $Справочник.ДвиженияДенежныхСредств],  
     |      $ДокС.Субконто1 as [Контрагент $Неопределенный],
     |      $ДокС.Субконто2 as [Договор $Неопределенный],
     |      SUM($ДокС.Приход) as Оплата
     |   ,ДокЗ.Всего Всего
     |
     |FROM
     |      $ДокументСтроки.Выписка as ДокС
     |INNER JOIN
     |      $Документ.Выписка as Док ON Док.IDDoc = ДокС.IDDoc
     |                                                AND $ДокС.ВидДвижения = :пВидДвижения
     |LEFT JOIN
     |      (
     |      SELECT
     |       $ДокЗ.Договор as [Договор1 $Справочник],
     |       SUM($ДокЗС.Всего) as [Всего $Число]
     |      FROM
     |            $ДокументСтроки.Заказ as ДокЗС
     |      INNER JOIN
     |            $Документ.Заказ as ДокЗ ON ДокЗС.IDDoc = ДокЗ.IDDoc
     |      GROUP BY $ДокЗ.Договор
     |      ) as ДокЗк ON ДокЗк.Договор1 = ДокС.Договор  
     |
     |INNER JOIN
     |      _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                         Жур.Date_Time_IDDoc BETWEEN :НДата AND :КДата~ AND
     |                         Жур.Closed & 1 = 1
     |GROUP BY
     |   $ДокС.ВидДвижения,$ДокС.Субконто1,$ДокС.Субконто2
     |";
     
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с соединениями
Ответ #8 - 15. Ноября 2007 :: 08:15
Печать  
Семка, создай свою ветку и напиши там что ты хочешь. Тут другой человек решает свои проблемы.
  
Наверх
 
IP записан
 
semka49
Junior Member
**
Отсутствует


а что такое 1с?

Сообщений: 16
Местоположение: Москва
Зарегистрирован: 15. Ноября 2007
Пол: Женский
Re: Помогите с соединениями
Ответ #9 - 15. Ноября 2007 :: 08:17
Печать  
прошу прощения Улыбка
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #10 - 15. Ноября 2007 :: 08:19
Печать  
NickAn писал(а) 15. Ноября 2007 :: 08:09:
Можно ли вообще "MAX" применять для строковых данных или у меня не правильно convert работает?


MAX использовать можно

Ты уверен что проблема в этом выражении?
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #11 - 15. Ноября 2007 :: 08:26
Печать  
Да уверен. и у меня такая ошибка не в первый раз. Без этого выражения все работает
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #12 - 15. Ноября 2007 :: 08:59
Печать  
Ну тогда выкладывай весь запрос
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #13 - 15. Ноября 2007 :: 09:02
Печать  
|Select  
     |      MAX(Convert(varchar(30),Case
     |      When Жур.IDDOCDEF=$ВидДокумента36.ПриходнаяНакладная Then cast(СпрК.Descr as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.ВозвратнаяНакладная Then cast(СпрК.ID as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.РозничнаяНакладная Then cast(СпрК.ID as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.ВозвратПоставщику Then cast(СпрК.ID as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.РасходнаяНакладная Then cast(СпрК.ID as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.ПереоценкаТМЦ Then 'Акт переоценки'
     |      When Жур.IDDOCDEF=$ВидДокумента36.ОстаткиТМЦ Then 'Акт списания'
     |      When Жур.IDDOCDEF=$ВидДокумента36.ПеремещениеРасход Then cast($ДПР.Откуда as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.ПеремещениеПриход Then cast($ДПП.Клиент as varchar(30))
     |      When Жур.IDDOCDEF=$ВидДокумента36.СторнированиеДокумента Then 'Сторнирование'
     |      Else 'Нет Кл' End)) as Клиент
     |      ,Жур.IDDOC as [Док $Документ]
     |      ,MAX(Жур.IDDOCDEF) as Док_вид
     |      ,Sum(Рег.СуммаГРНПриход) as ПрихСумГРН          
     |      ,Sum(Рег.НаценкаПриход) as ПрихСумНац
     |      ,Sum(Рег.СуммаГРНРасход) as РасхСумГРН
     |      ,Sum(Рег.НаценкаРасход) as РасхСумНац "+Групин+"
     |From
     |      $РегистрОстаткиОбороты.Остатки(:ДатаС, :ДатаПо~,Документ,Движения,
     |      ,Фирма=:выбФирма and ВидУчета=:сВидУчета"+Пер2+"
     |      ,(Фирма,ВидУчета,ТМЦ,Склад),(СуммаГрн,СуммаБезНДС,Наценка)) AS Рег
     |Inner JOIN
     |      _1SJOURN AS Жур (nolock) ON Рег.ПозицияДокумента  = Жур.DATE_TIME_IDDOC
     |Inner JOIN
     |      $Справочник.ТМЦ AS СпрТ (nolock) ON СпрТ.ID  = Рег.ТМЦ
     |Left JOIN
     |      $Документ.ПриходнаяНакладная  ДПН (nolock) on (ДПН.IDDOC = Жур.IDDOC)
     |LEFT JOIN  
     |      $Справочник.Клиенты СпрК on ($ДПН.Клиент=СпрК.ID)
     |LEFT JOIN  
     |      $Документ.ВозвратнаяНакладная ДВН on (ДВН.IDDoc = Жур.IDDoc)and($ДВН.Клиент = СпрК.ID)
     |LEFT JOIN  
     |      $Документ.РозничнаяНакладная ДРН on (ДРН.IDDoc = Жур.IDDoc)and($ДРН.Клиент = СпрК.ID)
     |LEFT JOIN  
     |      $Документ.ВозвратПоставщику ДВП on (ДВП.IDDoc = Жур.IDDoc)and($ДВП.Клиент = СпрК.ID)
     |LEFT JOIN  
     |      $Документ.РасходнаяНакладная ДРас on (ДРас.IDDoc = Жур.IDDoc)and($ДРас.Клиент = СпрК.ID)
     |LEFT JOIN  
     |      $Документ.ПереоценкаТМЦ ДПтм on (ДПтм.IDDoc = Жур.IDDoc)
     |LEFT JOIN  
     |      $Документ.ОстаткиТМЦ ДОтм on (ДОтм.IDDoc = Жур.IDDoc)
     |LEFT JOIN
     |      $Документ.ПеремещениеРасход ДПР on (ДПР.IDDoc = Жур.IDDoc)
     |LEFT JOIN
     |      $Документ.ПеремещениеПриход ДПП on (ДПП.IDDoc = Жур.IDDoc)
     |LEFT JOIN
     |      $Документ.СторнированиеДокумента ДСД on (ДСД.IDDoc = Жур.IDDoc)
     |Group by  
           Жур.IDDOC";
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #14 - 15. Ноября 2007 :: 09:13
Печать  
Ну во первых так справочник клиенты привязывать нельзя!
Так у тебя будут клиенты только для одного вида документов

Во вторых что этот запрос должен делать?

Зачем там Cast  и Convert?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать