Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите с соединением (число прочтений - 1389 )
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Помогите с соединением
12. Декабря 2011 :: 12:17
Печать  
Код
Выбрать все
	скл = "
	|select	  
	|	cast(left(ост.ПозицияДокумента, 8) as datetime) Дата,
	|	j.iddoc [Документ $Документ.ПутевойЛист],
	|	j.docno НомерДок,
	|	ост.Автомобиль [Автомобиль $Справочник.МестаХранения],
	|	$d.Водитель [Водитель $Справочник.Сотрудники],
	|	ост.Топливо [Топливо $Справочник.Номенклатура],
	|	Норма = case $n.Дополнительная when 0 then $n.Норма else 0 end,
	|	ДопНорма = case $n.Дополнительная when 1 then $n.Норма else 0 end,
	|	$n.Дополнительная Доп,
	|	Пробег = case $n.Дополнительная when 0 then $ds.Количество else 0 end,
	|	ДопПробег = case $n.Дополнительная when 1 then $ds.Количество else 0 end,
	|	$d.ОдометрВыезд ОдометрВыезд,
	|	$d.ОдометрВозвращение ОдометрВозвращение,
	|	coalesce($ds2.Количество, 0) Возвращено,
	|	ост.ПоФактуНачальныйОстаток,
	|	ост.ПоФактуПриход,
	|	ост.ПоФактуКонечныйОстаток,
	|	ост.ПоНормеРасход,
	|	ост.ПоФактуРасход - coalesce($ds2.Количество, 0) ПоФактуРасход,
	|	ост.ПоНормеРасход - (ост.ПоФактуРасход - coalesce($ds2.Количество, 0)) Перерасход
	|from $РегистрОстаткиОбороты.РасходТоплива(
	|	:d1,
	|	:d2~,
	|	Документ,
	|	Движения,
	|	,
	|	" + усл + ",
	|	,
	|	) ост
	|left join $ДокументСтроки.ПутевойЛист ds (nolock) on ds.iddoc = right(ост.ПозицияДокумента, 9)
	|	and $ds.Топливо = ост.Топливо
	|	and $ds.Признак = 3 	  
	|
	|left join $ДокументСтроки.ПутевойЛист ds2 (nolock) on ds2.iddoc = right(ост.ПозицияДокумента, 9)
	|	and $ds2.Признак = 2
	//|	and $ds.Топливо = ост.Топливо


	|left join $Справочник.НормыРасхода n (nolock) on n.id = $ds.Норма				    
	|join _1sjourn j (nolock) on j.date_time_iddoc = ост.ПозицияДокумента			  
	|join $Документ.ПутевойЛист d (nolock) on d.iddoc = j.iddoc
	|";
 


В том месте, где комментарий ост.Топливо - группа номенклатуры, $ds.Топливо - не группа.
Как сделать, чтобы соединение выполнялось только когда в строке документа элемент из группы, которая есть ост.Топливо?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с соединением
Ответ #1 - 12. Декабря 2011 :: 12:22
Печать  
Ты в регистр группу номенклатуры пихаешь что ли ?!
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Помогите с соединением
Ответ #2 - 12. Декабря 2011 :: 12:25
Печать  
Да
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с соединением
Ответ #3 - 12. Декабря 2011 :: 13:23
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1153469047/1#1

смотри, там есть и с помощью доп. таблички и с помощью хранимки.

Можно и с кучей лефт джоинов сделать.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Помогите с соединением
Ответ #4 - 12. Декабря 2011 :: 13:32
Печать  
Код
Выбрать все
скл = "
	|select
	|	cast(left(ост.ПозицияДокумента, 8) as datetime) Дата,
	|	j.iddoc [Документ $Документ.ПутевойЛист],
	|	j.docno НомерДок,
	|	ост.Автомобиль [Автомобиль $Справочник.МестаХранения],
	|	$d.Водитель [Водитель $Справочник.Сотрудники],
	|	ост.Топливо [Топливо $Справочник.Номенклатура],
	|	Норма = case $n.Дополнительная when 0 then $n.Норма else 0 end,
	|	ДопНорма = case $n.Дополнительная when 1 then $n.Норма else 0 end,
	|	$n.Дополнительная Доп,
	|	Пробег = case $n.Дополнительная when 0 then $ds.Количество else 0 end,
	|	ДопПробег = case $n.Дополнительная when 1 then $ds.Количество else 0 end,
	|	$d.ОдометрВыезд ОдометрВыезд,
	|	$d.ОдометрВозвращение ОдометрВозвращение,
	|	coalesce($ds2.Количество, 0) Возвращено,
	|	ост.ПоФактуНачальныйОстаток,
	|	ост.ПоФактуПриход,
	|	ост.ПоФактуКонечныйОстаток,
	|	ост.ПоНормеРасход,
	|	ост.ПоФактуРасход - coalesce($ds2.Количество, 0) ПоФактуРасход,
	|	ост.ПоНормеРасход - (ост.ПоФактуРасход - coalesce($ds2.Количество, 0)) Перерасход
	|from $РегистрОстаткиОбороты.РасходТоплива(
	|	:d1,
	|	:d2~,
	|	Документ,
	|	Движения,
	|	,
	|	" + усл + ",
	|	,
	|	) ост
	|left join $ДокументСтроки.ПутевойЛист ds (nolock) on ds.iddoc = right(ост.ПозицияДокумента, 9)
	|	and $ds.Топливо = ост.Топливо
	|	and $ds.Признак = 3
	|
	|left join $ДокументСтроки.ПутевойЛист ds3 (nolock) on ds3.iddoc = right(ост.ПозицияДокумента, 9)
	|	and $ds3.Признак = 2
	|left join $Справочник.Номенклатура nom on nom.id = $ds3.Топливо
	|
	|left join $ДокументСтроки.ПутевойЛист ds2 (nolock) on ds2.iddoc = right(ост.ПозицияДокумента, 9)
	|	and $ds2.Признак = 2
	|	and $ds2.Топливо = nom.id
	|	and ост.Топливо = nom.parentid

	|left join $Справочник.НормыРасхода n (nolock) on n.id = $ds.Норма
	|join _1sjourn j (nolock) on j.date_time_iddoc = ост.ПозицияДокумента
	|join $Документ.ПутевойЛист d (nolock) on d.iddoc = j.iddoc
	|";  


Сделал так. Работает и лучше не трогать.
Спасибо.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с соединением
Ответ #5 - 12. Декабря 2011 :: 13:47
Печать  
Бредятину кукую-то написал, если что
Улыбка

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать