Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы. (число прочтений - 1660 )
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
18. Сентября 2009 :: 11:43
Печать  
Есть простой запрос:
Код
Выбрать все
ТекстЗП_ПЛ = "
	|SELECT
	|	TMP.Водитель AS Водитель,
	|	TMP.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	|	TMP.НомерСтроки AS НомерСтроки,
	|	TMP.Разв AS Разв,
	|	TMP.Автор AS [Автор $Справочник.Пользователи],
	|	TMP.ID AS ID,
	|	TMP.Документ AS Документ,
	|	TMP.Документ_вид AS Документ_вид,
	|	TMP.КвоЗак AS КвоЗак,
	|	TMP.СуммаЗак AS СуммаЗак,
	|	TMP.СтатусДок AS СтатусДок,
	|	TMP.ВидДок AS ВидДок,
	|	TMP.ДатаДок AS ДатаДок,
	|	TMP.Время AS Время,
	|	TMP.НомерДок AS НомерДок,
	|	TMP.Водитель AS Водитель,
	|	TMP._Экспедитор AS _Экспедитор,
	|	TMP.Улица AS Улица

	|FROM(
	|SELECT
	|	0 AS Разв,
	|	0 AS НомерСтроки,
	|	TPL.IDDOC+'0' AS ID,
	|	TPL.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	|	TPL.IDDOC AS Документ,
	|	TPL.IDDOCDEF AS Документ_вид,
	|	TPL.Проведен + TPL.ПометкаНаУдаление*2+1 AS СтатусДок,
	|	TPL._ПредставлениеВидДок AS ВидДок,
	|	TPL.ДатаДок AS ДатаДок,
	|	TPL.ВремяДок AS Время,
	|	TPL.НомерДок AS НомерДок,
	|	Tsotr.Наименование AS Водитель,
	|	'' AS Улица,
	|	TPL._Экспедитор AS _Экспедитор,
	|	(SELECT
	|		SUM(Tzak.СуммаГРН)
	|	FROM Документ_Заказ AS Tzak (NOLOCK)
	|	WHERE
	|		Tzak.IDDOC IN (SELECT TPL3.Заказ FROM ДокументСтроки_ПутевойЛист AS TPL3 (NOLOCK) WHERE TPL3.IDDOC = TPL.IDDOC)
	|	) AS СуммаЗак,
	|	(SELECT
	|		COUNT(Tzak.IDDOC)
	|	FROM Документ_Заказ AS Tzak (NOLOCK)
	|	WHERE
	|		Tzak.IDDOC IN (SELECT TPL3.Заказ FROM ДокументСтроки_ПутевойЛист AS TPL3 (NOLOCK) WHERE TPL3.IDDOC = TPL.IDDOC)
	|	) AS КвоЗак,
	|	TPL.Автор AS Автор
	|FROM
	|	Документ_ПутевойЛист AS TPL (NOLOCK)
	|	LEFT OUTER JOIN Справочник_Сотрудники AS Tsotr (NOLOCK) ON (Tsotr.ID = TPL.Водитель)
	|WHERE
	|	TPL.DATE_TIME_IDDOC BETWEEN '20090914' AND '20090914Z'
	|
	|UNION ALL
	|
	|SELECT
	|	1 AS Разв,
	|	TPL.НомерСтроки AS НомерСтроки,
	|	TPL.IDDOC+CAST(TPL.НомерСтроки AS Char(4)) AS ID,
	|	TPL_Sh.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	|	T_Zak.IDDOC AS Документ,
	|	T_Zak.IDDOCDEF AS Документ_вид,
	|	T_Zak.Проведен + T_Zak.ПометкаНаУдаление*2 + 1 AS СтатусДок,
	|	T_Zak._ПредставлениеВидДок AS ВидДок,
	|	T_Zak.ДатаДок AS ДатаДок,
	|	T_Zak.ВремяДок AS Время,
	|	T_Zak.НомерДок AS НомерДок,
	|	Tsotr.Наименование AS Водитель,
	|	TUl.Наименование AS Улица,
	|	TPL_Sh._Экспедитор AS _Экспедитор,
	|	(SELECT
	|		SUM(Tzak.СуммаГРН)
	|	FROM Документ_Заказ AS Tzak (NOLOCK)
	|	WHERE
	|		Tzak.IDDOC = TPL.Заказ
	|	) AS СуммаЗак,
	|	1 AS КвоЗак,
	|	TPL_Sh.Автор AS Автор
	|FROM
	|	ДокументСтроки_ПутевойЛист AS TPL (NOLOCK)
	|	INNER JOIN Документ_ПутевойЛист AS TPL_Sh (NOLOCK) ON (TPL_Sh.IDDOC = TPL.IDDOC)
	|	LEFT OUTER JOIN Справочник_Сотрудники AS Tsotr (NOLOCK) ON (Tsotr.ID = TPL_Sh.Водитель)
	|	INNER JOIN Документ_Заказ AS T_Zak (NOLOCK) ON (T_Zak.IDDOC = TPL.Заказ)
	|	LEFT OUTER JOIN Справочник_Доставка_Улица AS TUl (NOLOCK) ON (TUl.ID = T_Zak.Улица)
	|WHERE
	|	TPL_Sh.DATE_TIME_IDDOC BETWEEN '20090914' AND '20090914Z'
	|	AND TPL.IDDOC = '  2SAD   '
	|) AS TMP"; 



Вроде все хорошо но есть глюк в том, что в колонках ТП данные перепутываются местами.
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
Ответ #1 - 18. Сентября 2009 :: 11:44
Печать  
Вот как выглядит запрос, отправляемый на SQL компонентой:
Код
Выбрать все
select top 22
TMP.Водитель as Водитель,
TMP.DATE_TIME_IDDOC as DATE_TIME_IDDOC,
TMP.НомерСтроки as НомерСтроки,
TMP.ID as ID,
TMP.СтатусДок as СтатусДок,
TMP.Документ_вид as Документ_вид,
TMP.Документ as Документ,
TMP.Разв as Разв,
TMP.ДатаДок as ДатаДок,
TMP.НомерДок as НомерДок,
TMP.Улица as Улица,
TMP.Автор as Автор,
TMP.СуммаЗак as СуммаЗак,
TMP.КвоЗак as КвоЗак
from (
SELECT
	0 AS Разв,
	0 AS НомерСтроки,
	TPL.IDDOC+'0' AS ID,
	TPL.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	TPL.IDDOC AS Документ,
	TPL.IDDOCDEF AS Документ_вид,
	TPL.Проведен + TPL.ПометкаНаУдаление*2+1 AS СтатусДок,
	TPL._ПредставлениеВидДок AS ВидДок,
	TPL.ДатаДок AS ДатаДок,
	TPL.ВремяДок AS Время,
	TPL.НомерДок AS НомерДок,
	Tsotr.Наименование AS Водитель,
	'' AS Улица,
	TPL._Экспедитор AS _Экспедитор,
	(SELECT
		SUM(Tzak.СуммаГРН)
	FROM Документ_Заказ AS Tzak (NOLOCK)
	WHERE
		Tzak.IDDOC IN (SELECT TPL3.Заказ FROM ДокументСтроки_ПутевойЛист AS TPL3 (NOLOCK) WHERE TPL3.IDDOC = TPL.IDDOC)
	) AS СуммаЗак,
	(SELECT
		COUNT(Tzak.IDDOC)
	FROM Документ_Заказ AS Tzak (NOLOCK)
	WHERE
		Tzak.IDDOC IN (SELECT TPL3.Заказ FROM ДокументСтроки_ПутевойЛист AS TPL3 (NOLOCK) WHERE TPL3.IDDOC = TPL.IDDOC)
	) AS КвоЗак,
	TPL.Автор AS Автор
FROM
	Документ_ПутевойЛист AS TPL (NOLOCK)
	LEFT OUTER JOIN Справочник_Сотрудники AS Tsotr (NOLOCK) ON (Tsotr.ID = TPL.Водитель)
WHERE
	TPL.DATE_TIME_IDDOC BETWEEN '20090914' AND '20090914Z'

UNION ALL

SELECT
	1 AS Разв,
	TPL.НомерСтроки AS НомерСтроки,
	TPL.IDDOC+CAST(TPL.НомерСтроки AS Char(4)) AS ID,
	TPL_Sh.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	T_Zak.IDDOC AS Документ,
	T_Zak.IDDOCDEF AS Документ_вид,
	T_Zak.Проведен + T_Zak.ПометкаНаУдаление*2 + 1 AS СтатусДок,
	T_Zak._ПредставлениеВидДок AS ВидДок,
	T_Zak.ДатаДок AS ДатаДок,
	T_Zak.ВремяДок AS Время,
	T_Zak.НомерДок AS НомерДок,
	Tsotr.Наименование AS Водитель,
	TUl.Наименование AS Улица,
	TPL_Sh._Экспедитор AS _Экспедитор,
	(SELECT
		SUM(Tzak.СуммаГРН)
	FROM Документ_Заказ AS Tzak (NOLOCK)
	WHERE
		Tzak.IDDOC = TPL.Заказ
	) AS СуммаЗак,
	1 AS КвоЗак,
	TPL_Sh.Автор AS Автор
FROM
	ДокументСтроки_ПутевойЛист AS TPL (NOLOCK)
	INNER JOIN Документ_ПутевойЛист AS TPL_Sh (NOLOCK) ON (TPL_Sh.IDDOC = TPL.IDDOC)
	LEFT OUTER JOIN Справочник_Сотрудники AS Tsotr (NOLOCK) ON (Tsotr.ID = TPL_Sh.Водитель)
	INNER JOIN Документ_Заказ AS T_Zak (NOLOCK) ON (T_Zak.IDDOC = TPL.Заказ)
	LEFT OUTER JOIN Справочник_Доставка_Улица AS TUl (NOLOCK) ON (TUl.ID = T_Zak.Улица)
WHERE
	TPL_Sh.DATE_TIME_IDDOC BETWEEN '20090914' AND '20090914Z'
	AND TPL.IDDOC = '  2SAD   '
) AS TMP

order by TMP.Водитель, TMP.DATE_TIME_IDDOC, TMP.НомерСтроки
 

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
Ответ #2 - 18. Сентября 2009 :: 11:47
Печать  
Как видно поле "_Экспедитор" где то пропало из запроса. В результате при выводе данных в ТП в этой колонке пусто, что не есть хорошо.

К тому же при имзенении в моем запросе порядка выборки занчения в колонках замещаются, так в колонке Автор выводиться зачем то значение КвоЗак. В общем что-то не так, такого не должно быть.
  
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
Ответ #3 - 18. Сентября 2009 :: 11:52
Печать  
А если во всех запросах/подзапросах убрать поле
Код
Выбрать все
._Экспедитор AS _Экспедитор, 

работает нормально?
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
Ответ #4 - 18. Сентября 2009 :: 11:57
Печать  
Убрал из запроса Экспедитора, теперь улицуне выводит. Просто шаманство с бубном.
ЗЫ
1С++ - 3.0.1.23
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
Ответ #5 - 18. Сентября 2009 :: 12:07
Печать  
Нашел где глюк, строка:
Код
Выбрать все
TMP.Водитель AS Водитель, 


Указана дважды в выборке, хотя для SQL - это все равно, а вот для 1С++ видимо критично.
  
Наверх
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: ТабличноеПоле и поставщик - запрос SQL - что то непонятно выберает столбцы.
Ответ #6 - 18. Сентября 2009 :: 12:40
Печать  
а реквизит документа у тебя так и называется _Экспедитор (нижнее подчеркивание впереди)?
  
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать