Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Типизация элементов справочников в UNION ALL (число прочтений - 1676 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Типизация элементов справочников в UNION ALL
07. Сентября 2011 :: 05:11
Печать  
  Необходимо получить таблицу данных, где в одной колонке находятся элементы различных справочников. Когда делаю объединение таблиц выборок Union All c требуемыми данными то типизируются элементы этой колонки по виду первого справочника и для второй выборки выходит: <объект не найден>.
Текст запроса:
Код
Выбрать все
|SELECT Ном.ID [Элемент $Справочник.Номенклатура]
		|	, Dat1.Dat День
		|   , IsNull(Sum(Выборка.КонОст),0) Остаток
		|   , 1 МинОстаток
		|   , case  when Sum(Выборка.КонОст) is null
		|	    then 1
		|	    else 0 end Провалы
		|   , 0 Везде
		|   , 0 ПериодыПровалов
		|   , 0 КоличествоПровалов
		|   , 0 КоличествоПериодов
		|   , 1 Всего
		|FROM $Справочник.Номенклатура AS Ном With (NOLOCK)
		|   Full Outer Join Dat_  As Dat1
		|				 On  1=1
		|	Left OUTER JOIN
		|	(SELECT ОстаткиТМЦОстаткиОбороты.Номенклатура Номенк
		|	 , ОстаткиТМЦОстаткиОбороты.Период Период
		|	 , SUM(ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток) КонОст
		|	 FROM $РегистрОстаткиОбороты.ОстаткиТМЦ(:НачДата,
		|	 :КонДата~,
		|	 День,
		|	 ДвиженияИГраницыПериода,,
		|	 --(Номенклатура = :ВыбНоменклатура)
		|	 (Номенклатура in (Select val from #СписокНоменклатуры))
		|	    And (Склад = :ВыбСклад),
		|	  Номенклатура,) AS ОстаткиТМЦОстаткиОбороты
		|	 GROUP BY ОстаткиТМЦОстаткиОбороты.Номенклатура
		|	 , ОстаткиТМЦОстаткиОбороты.Период) As Выборка
		|			   On (Выборка.Номенк = Ном.Id) And (Dat1.Dat=Выборка.Период)
		|   Left outer join $Справочник.СлужебныйОбщий As СпрСлОбщ On СпрСлОбщ.ParentExt = Ном.Id
		|							   And $СпрСлОбщ.Склад = :ВыбСклад
		|WHERE (Ном.Id in (Select val from #СписокНоменклатуры))
		|	And ($Ном.Каталог = $ПустойИД)
		|	-- (Ном.ID = :ВыбНоменклатура)
		|GROUP BY Ном.ID, Ном.Descr, Dat1.Dat, $Ном.МинОстаток, $СпрСлОбщ.НормаПодтоварки
		|-- Order By Ном.Descr, Dat1.Dat
		|Union All
		|SELECT Каталоги.ID [Элемент $Справочник.Каталоги]
		|--   , Ном.ID [Номенклатура $Справочник.Номенклатура]
		|	, Dat1.Dat День
		|   , IsNull(Sum(Выборка.КонОст),0) Остаток
		|   , 1 МинОстаток
		|   , case  when Sum(Выборка.КонОст) is null
		|	    then 1
		|	    else 0 end Провалы
		|   , 0 Везде
		|   , 0 ПериодыПровалов
		|   , 0 КоличествоПровалов
		|   , 0 КоличествоПериодов
		|   , 1 Всего
		|FROM $Справочник.каталоги As Каталоги
		|   Left Join $Справочник.Номенклатура AS Ном With (NOLOCK) on Каталоги.Id = $Ном.Каталог
		|   Full Outer Join Dat_  As Dat1
		|				 On  1=1
		|	Left OUTER JOIN
		|	(SELECT ОстаткиТМЦОстаткиОбороты.Номенклатура Номенк
		|	 , ОстаткиТМЦОстаткиОбороты.Период Период
		|	 , SUM(ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток) КонОст
		|	 FROM $РегистрОстаткиОбороты.ОстаткиТМЦ(:НачДата,
		|	 :КонДата~,
		|	 День,
		|	 ДвиженияИГраницыПериода,,
		|	 -- (Номенклатура = :ВыбНоменклатура)
		|	 --(Номенклатура in (Select val from #СписокНоменклатуры))
		|	 --   And
		|	 (Склад = :ВыбСклад),
		|	  Номенклатура,) AS ОстаткиТМЦОстаткиОбороты
		|	 GROUP BY ОстаткиТМЦОстаткиОбороты.Номенклатура
		|	 , ОстаткиТМЦОстаткиОбороты.Период) As Выборка
		|			   On (Выборка.Номенк = Ном.Id) And (Dat1.Dat=Выборка.Период)
		|   Left outer join $Справочник.СлужебныйОбщий As СпрСлОбщ On СпрСлОбщ.ParentExt = Ном.Id
		|							   And $СпрСлОбщ.Склад = :ВыбСклад
		| WHERE (Ном.Id in (Select val from #СписокНоменклатуры))
		|GROUP BY Каталоги.Id, Ном.ID, Ном.Descr, Dat1.Dat, $Ном.МинОстаток, $СпрСлОбщ.НормаПодтоварки  


  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Типизация элементов справочников в UNION ALL
Ответ #1 - 07. Сентября 2011 :: 05:16
Печать  
Оберни свое объедиение в еще один запрос
а в подзапросах делай вот так:
Код
Выбрать все
SELECT  $ВидСправочника36.Номенклатура + Ном.ID as Элемент 


Ну и соответственно типизируй в верхнем запросе как
Код
Выбрать все
$Справочник 

  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Типизация элементов справочников в UNION ALL
Ответ #2 - 07. Сентября 2011 :: 05:28
Печать  
Просто $ВидСправочника+id ,
ВидСправочника36 это для дбф, для фокса
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Типизация элементов справочников в UNION ALL
Ответ #3 - 07. Сентября 2011 :: 06:11
Печать  
Eprst писал(а) 07. Сентября 2011 :: 05:28:
Просто $ВидСправочника+id ,
ВидСправочника36 это для дбф, для фокса

не не не, все верно - 36

и оборачивать необязательно
SELECT $Справочник36.Номенклатура + Ном.ID [Элемент $Справочник]
...
Union All
SELECT $Справочник36.Каталоги + Каталоги.ID
...
     
  

1&&2&&3
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Типизация элементов справочников в UNION ALL
Ответ #4 - 07. Сентября 2011 :: 07:32
Печать  
Не верю!
Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Типизация элементов справочников в UNION ALL
Ответ #5 - 07. Сентября 2011 :: 07:35
Печать  
Станиславский, епт.
  

1&&2&&3
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Типизация элементов справочников в UNION ALL
Ответ #6 - 07. Сентября 2011 :: 07:41
Печать  
Ага.. никому веры нет.
Улыбка
36 надо, обмишурился.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Типизация элементов справочников в UNION ALL
Ответ #7 - 12. Сентября 2011 :: 03:04
Печать  
Спасибо всем! Получилось!
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать