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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Глючек с запросом, ничего не возвращает в ТЗ
21. Мая 2007 :: 14:15
Печать  
Вот такой текст запроса:
Код
Выбрать все
SET NOCOUNT ON
Declare @PERIODR DateTime
SET @PERIODR = Convert(DateTime,'20070401',112)

IF EXISTS (SELECT * from tempdb..sysobjects where id = object_id('tempdb..#Temp_Tab'))
DROP TABLE #Temp_Tab

SELECT
	TMP.Счет,
	ISNULL(RIGHT(TabRas.SP8803,9),TMP.ТекДок) AS ТекДок,
	TMP.Состояние AS Состояние,
	TMP.ID AS ID,
	TMP.ТМЦ AS ТМЦ,
	TMP.ДатаПр AS ДатаПр,
	TabSch_T.SP8832 AS КвоСчета,
	TabSch_T.LINENO_ AS НомерСтрокиСчета,
	TMP.Кво AS Кво
INTO #Temp_Tab
FROM (
SELECT
	TabReg.SP8909 AS Счет,
	TabReg.SP8908 AS Состояние,
	TabReg.SP8910 AS ТМЦ,
	RIGHT(TabReg.SP8911,9) AS ТекДок,
	TabReg.SP8913 AS ID,
	TabReg.SP8912 AS ДатаПр,
	SUM(TabReg.SP8916) As Кво
FROM
	RG8918 As TabReg (NOLOCK)
	INNER JOIN _1SJOURN AS TabJ_S (NOLOCK) ON (TabJ_S.IDDOC = TabReg.SP8909)
WHERE
	TabReg.PERIOD = @PERIODR
	AND (
		(TabReg.SP8908 = '   6FN   ') -- Нужно (Заказ)
		OR (TabReg.SP8908 = '   6FO   ') -- Заказано (Подтверждение)
		OR (TabReg.SP8908 = '   6FP   ') -- Подтверждено (Наряд)
		OR (TabReg.SP8908 = '   6FQ   ') -- Сделано (Оприходование)
		OR (TabReg.SP8908 = '   8WD   ') -- Передано (Перем на филиал)
		OR (TabReg.SP8908 = '   8WE   ') -- получено (Перем в филиал)
		OR (TabReg.SP8908 = '   8FT   ') -- Оказано (Отказ)
		OR (TabReg.SP8908 = '   8H5   ') -- Продано (РН)
		)
	AND (TabReg.SP8912 >= '20070101') -- Дата в регистре
	AND (TabReg.SP8912 <= '20070331') -- Дата в регистре
	AND (TabJ_S.SP3241 = '     6CB ') -- Филиал
GROUP BY
	TabReg.SP8909,
	TabReg.SP8908,
	TabReg.SP8910,
	TabReg.SP8911,
	TabReg.SP8913,
	TabReg.SP8912
HAVING
	(SUM(TabReg.SP8916) <> 0)
) AS TMP
	LEFT OUTER JOIN DT8810 AS TabRas (NOLOCK) ON ((TMP.ТекДок = TabRas.IDDOC) AND (TMP.ID = TabRas.SP11389))
	--INNER JOIN DT8853 AS TabSch_T (NOLOCK) ON (TabSch_T.IDDOC = TMP.Счет) AND (TabSch_T.SP8830 = TMP.ТМЦ) AND (LEFT(TabSch_T.SP11371,2) = TMP.ID)
	INNER JOIN DT8853 AS TabSch_T (NOLOCK) ON
	(TMP.Счет = TabSch_T.IDDOC) AND (TabSch_T.SP8830 = TMP.ТМЦ)	 AND (TabSch_T.SP11371 = LEFT(TMP.ID,2)+'	    ')




SELECT
	TMP3.Счет AS [Счет $Документ.СчетФ],
	TabZ.SP8560 AS [ГдеДелать $Справочник],
	TMP3.НомерСтрокиСчета AS [НомерСтрокиСчета],
	TMP3.ТМЦ AS [ТМЦ $Справочник.ТМЦ],
	TMP3.ДатаПр AS [ДатаПр $Дата],
	TMP3.КвоСчета AS КвоСчета,
	CASE WHEN
		TMP3.Состояние = '   6FN   ' -- Нужно
		THEN TMP3.Кво ELSE 0 END AS Кво_Нужно,
	CASE WHEN
		TMP3.Состояние = '   6FO   ' -- Заказано
		THEN TMP3.Кво ELSE 0 END AS Кво_Заказано,
	CASE WHEN TMP3.Состояние =  '   6FP   ' -- Подтверждено
		THEN TMP3.Кво ELSE 0 END AS Кво_Подтверждено,
	CASE WHEN TMP3.Состояние = '   6FQ   ' -- Сделано
		THEN TMP3.Кво ELSE 0 END AS Кво_Сделано,
	CASE WHEN TMP3.Состояние =  '   8FT   ' -- Отказано
		THEN TMP3.Кво ELSE 0 END AS Кво_Отказано,
	CASE WHEN TMP3.Состояние = '   8H5   ' -- Продано
		THEN TMP3.Кво ELSE 0 END AS Кво_Продано,
	CASE WHEN TMP3.Состояние =  '   8WD   ' -- Передано
		THEN TMP3.Кво ELSE 0 END AS Кво_Передано,
	CASE WHEN TMP3.Состояние =  '   8WE   ' -- получено
		THEN TMP3.Кво ELSE 0 END AS Кво_Получено
	--(SELECT SUM(TabSc.SP8832) FROM DT8853 AS TabSc (NOLOCK) WHERE (TabSc.IDDOC = TMP3.Счет) AND (LEFT(TabSc.SP11371,2) = TMP3.ID)) AS КвоСчета
FROM
(
SELECT
	TMP2.Счет,
	CASE TabJ.IDDOCDEF
		WHEN 8579 THEN TabZak.IDDOC
		WHEN 8752 THEN TabPod.SP8734
		WHEN 8627 THEN TabNar.SP8598
		WHEN 8656 THEN TabOpr.SP8631
		WHEN 8710 THEN TabPer.SP8685
		WHEN 8682 THEN TabOtk.SP8665
		END
		AS Заказ,
	TMP2.ТекДок AS ТекДок,
	TMP2.Состояние AS Состояние,
	TMP2.НомерСтрокиСчета AS НомерСтрокиСчета,
	TMP2.ТМЦ AS ТМЦ,
	TMP2.ДатаПр AS ДатаПр,
	TMP2.Кво AS Кво,
	TMP2.КвоСчета AS КвоСчета
FROM #Temp_Tab AS TMP2

	INNER JOIN _1SJOURN AS TabJ (NOLOCK) ON (TabJ.IDDOC = TMP2.ТекДок)
	LEFT OUTER JOIN DH8579 AS TabZak ON (TMP2.ТекДок = TabZak.IDDOC) -- Заказ
	LEFT OUTER JOIN DH8752 AS TabPod ON (TMP2.ТекДок = TabPod.IDDOC) -- Подтверждение
	LEFT OUTER JOIN DH8627 AS TabNar ON (TMP2.ТекДок = TabNar.IDDOC) -- Наряд
	LEFT OUTER JOIN DH8656 AS TabOpr ON (TMP2.ТекДок = TabOpr.IDDOC) -- Оприходование
	LEFT OUTER JOIN DH8710 AS TabPer ON (TMP2.ТекДок = TabPer.IDDOC) -- Перемещение
	LEFT OUTER JOIN DH8682 AS TabOtk ON (TMP2.ТекДок = TabOtk.IDDOC) -- Отказ
) AS TMP3
	LEFT OUTER JOIN DH8579 AS TabZ (NOLOCK) ON (TMP3.Заказ = TabZ.IDDOC)
SET NOCOUNT OFF
 


1С++ его выполняет, но почему то быстро, если запрос делать в QA - то запрос длиться гораздо дольше и возвращает результат а 1С++ - ничего не возвращает (пустая ТЗ). В чем может быть проблема? (запрос вытащил именно с Profiler-а думал может глючит парсер, так вроде запрос нормальный и возвращает результат).
ЗЫ
1С++ - 2.0.3.3. 1С - 25 релиз.
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #1 - 21. Мая 2007 :: 14:19
Печать  
А вот такой запрос работает без проблем (убрал TabSch_T.LINENO_ AS НомерСтрокиСчета и в дальнейшем группировку по этому полю).
Код
Выбрать все
SET NOCOUNT ON
Declare @PERIODR DateTime
SET @PERIODR = Convert(DateTime,'20070401',112)

IF EXISTS (SELECT * from tempdb..sysobjects where id = object_id('tempdb..#Temp_Tab'))
DROP TABLE #Temp_Tab

SELECT
	TMP.Счет,
	ISNULL(RIGHT(TabRas.SP8803,9),TMP.ТекДок) AS ТекДок,
	TMP.Состояние AS Состояние,
	TMP.ID AS ID,
	TMP.ТМЦ AS ТМЦ,
	TMP.ДатаПр AS ДатаПр,
	TabSch_T.SP8832 AS КвоСчета,
	TMP.Кво AS Кво
INTO #Temp_Tab
FROM (
SELECT
	TabReg.SP8909 AS Счет,
	TabReg.SP8908 AS Состояние,
	TabReg.SP8910 AS ТМЦ,
	RIGHT(TabReg.SP8911,9) AS ТекДок,
	TabReg.SP8913 AS ID,
	TabReg.SP8912 AS ДатаПр,
	SUM(TabReg.SP8916) As Кво
FROM
	RG8918 As TabReg (NOLOCK)
	INNER JOIN _1SJOURN AS TabJ_S (NOLOCK) ON (TabJ_S.IDDOC = TabReg.SP8909)
WHERE
	TabReg.PERIOD = @PERIODR
	AND (
		(TabReg.SP8908 = '   6FN   ') -- Нужно (Заказ)
		OR (TabReg.SP8908 = '   6FO   ') -- Заказано (Подтверждение)
		OR (TabReg.SP8908 = '   6FP   ') -- Подтверждено (Наряд)
		OR (TabReg.SP8908 = '   6FQ   ') -- Сделано (Оприходование)
		OR (TabReg.SP8908 = '   8WD   ') -- Передано (Перем на филиал)
		OR (TabReg.SP8908 = '   8WE   ') -- получено (Перем в филиал)
		OR (TabReg.SP8908 = '   8FT   ') -- Оказано (Отказ)
		OR (TabReg.SP8908 = '   8H5   ') -- Продано (РН)
		)
	AND (TabReg.SP8912 >= '20070101') -- Дата в регистре
	AND (TabReg.SP8912 <= '20070331') -- Дата в регистре
	AND (TabJ_S.SP3241 = '     6CB ') -- Филиал
GROUP BY
	TabReg.SP8909,
	TabReg.SP8908,
	TabReg.SP8910,
	TabReg.SP8911,
	TabReg.SP8913,
	TabReg.SP8912
HAVING
	(SUM(TabReg.SP8916) <> 0)
) AS TMP
	LEFT OUTER JOIN DT8810 AS TabRas (NOLOCK) ON ((TMP.ТекДок = TabRas.IDDOC) AND (TMP.ID = TabRas.SP11389))
	--INNER JOIN DT8853 AS TabSch_T (NOLOCK) ON (TabSch_T.IDDOC = TMP.Счет) AND (TabSch_T.SP8830 = TMP.ТМЦ) AND (LEFT(TabSch_T.SP11371,2) = TMP.ID)
	INNER JOIN DT8853 AS TabSch_T (NOLOCK) ON
	(TMP.Счет = TabSch_T.IDDOC) AND (TabSch_T.SP8830 = TMP.ТМЦ)	 AND (TabSch_T.SP11371 = LEFT(TMP.ID,2)+'	    ')




SELECT
	TMP3.Счет AS [Счет $Документ.СчетФ],
	TabZ.SP8560 AS [ГдеДелать $Справочник],
	TMP3.ID AS [ID],
	TMP3.ТМЦ AS [ТМЦ $Справочник.ТМЦ],
	TMP3.ДатаПр AS [ДатаПр $Дата],
	TMP3.КвоСчета AS КвоСчета,
	CASE WHEN
		TMP3.Состояние = '   6FN   ' -- Нужно
		THEN TMP3.Кво ELSE 0 END AS Кво_Нужно,
	CASE WHEN
		TMP3.Состояние = '   6FO   ' -- Заказано
		THEN TMP3.Кво ELSE 0 END AS Кво_Заказано,
	CASE WHEN TMP3.Состояние =  '   6FP   ' -- Подтверждено
		THEN TMP3.Кво ELSE 0 END AS Кво_Подтверждено,
	CASE WHEN TMP3.Состояние = '   6FQ   ' -- Сделано
		THEN TMP3.Кво ELSE 0 END AS Кво_Сделано,
	CASE WHEN TMP3.Состояние =  '   8FT   ' -- Отказано
		THEN TMP3.Кво ELSE 0 END AS Кво_Отказано,
	CASE WHEN TMP3.Состояние = '   8H5   ' -- Продано
		THEN TMP3.Кво ELSE 0 END AS Кво_Продано,
	CASE WHEN TMP3.Состояние =  '   8WD   ' -- Передано
		THEN TMP3.Кво ELSE 0 END AS Кво_Передано,
	CASE WHEN TMP3.Состояние =  '   8WE   ' -- получено
		THEN TMP3.Кво ELSE 0 END AS Кво_Получено
	--(SELECT SUM(TabSc.SP8832) FROM DT8853 AS TabSc (NOLOCK) WHERE (TabSc.IDDOC = TMP3.Счет) AND (LEFT(TabSc.SP11371,2) = TMP3.ID)) AS КвоСчета
FROM
(
SELECT
	TMP2.Счет,
	CASE TabJ.IDDOCDEF
		WHEN 8579 THEN TabZak.IDDOC
		WHEN 8752 THEN TabPod.SP8734
		WHEN 8627 THEN TabNar.SP8598
		WHEN 8656 THEN TabOpr.SP8631
		WHEN 8710 THEN TabPer.SP8685
		WHEN 8682 THEN TabOtk.SP8665
		END
		AS Заказ,
	TMP2.ТекДок AS ТекДок,
	TMP2.Состояние AS Состояние,
	TMP2.ID AS ID,
	TMP2.ТМЦ AS ТМЦ,
	TMP2.ДатаПр AS ДатаПр,
	TMP2.Кво AS Кво,
	TMP2.КвоСчета AS КвоСчета
FROM #Temp_Tab AS TMP2

	INNER JOIN _1SJOURN AS TabJ (NOLOCK) ON (TabJ.IDDOC = TMP2.ТекДок)
	LEFT OUTER JOIN DH8579 AS TabZak ON (TMP2.ТекДок = TabZak.IDDOC) -- Заказ
	LEFT OUTER JOIN DH8752 AS TabPod ON (TMP2.ТекДок = TabPod.IDDOC) -- Подтверждение
	LEFT OUTER JOIN DH8627 AS TabNar ON (TMP2.ТекДок = TabNar.IDDOC) -- Наряд
	LEFT OUTER JOIN DH8656 AS TabOpr ON (TMP2.ТекДок = TabOpr.IDDOC) -- Оприходование
	LEFT OUTER JOIN DH8710 AS TabPer ON (TMP2.ТекДок = TabPer.IDDOC) -- Перемещение
	LEFT OUTER JOIN DH8682 AS TabOtk ON (TMP2.ТекДок = TabOtk.IDDOC) -- Отказ
) AS TMP3
	LEFT OUTER JOIN DH8579 AS TabZ (NOLOCK) ON (TMP3.Заказ = TabZ.IDDOC)
SET NOCOUNT OFF
 

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #2 - 21. Мая 2007 :: 14:31
Печать  
А что самое интресное, что текст запроса здесь нипричем, но уже как выглядел модуль - не вспомню, в общем ашибка самоустранилась.
  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #3 - 21. Мая 2007 :: 15:39
Печать  
Скажи коротенько что оно делает?  Подмигивание
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #4 - 21. Мая 2007 :: 16:45
Печать  
Цитата:
Скажи коротенько что оно делает?  Подмигивание


Показывает в позаказном производстве состояние заказа на производство. Заказом на производство - есть заказ, но это отчет для менеджера, для которых заказом есть счет-фактура клиента.
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #5 - 22. Мая 2007 :: 07:29
Печать  
Запусти квери аналайзер в 1С, выполни там запрос, и глянь, сколько у тебя батчей.
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #6 - 22. Мая 2007 :: 08:23
Печать  
Кстати, тож вопрос: ну не могу 1CQA запустить...
гРФорма.УстановитьФорму(Форма);
{\\FILE_SRV\TRADE\БАЗА\EXTFORMS\1CQA.ERT(188)}: Значение не представляет агрегатный объект
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #7 - 22. Мая 2007 :: 08:52
Печать  
Mikeware писал(а) 22. Мая 2007 :: 08:23:
Кстати, тож вопрос: ну не могу 1CQA запустить...
гРФорма.УстановитьФорму(Форма);
{\\FILE_SRV\TRADE\БАЗА\EXTFORMS\1CQA.ERT(188)}: Значение не представляет агрегатный объект

А у тебя класс "Общие.Форма.Привязка" зарегестрирован?
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #8 - 22. Мая 2007 :: 12:57
Печать  
JohnyDeath писал(а) 22. Мая 2007 :: 08:52:
А у тебя класс "Общие.Форма.Привязка" зарегестрирован?

Да, заренистрирован...
{\\FILE_SRV\TRADE\БАЗА\КЛАССЫ\ОБЩИЕ.ФОРМА.ПРИВЯЗКА.ERT(319)}: Значение не представляет агрегатный объект (ВыбратьСтроки)
ТПривязки.ПолучитьСтрокуПоНомеру(НомерСтрокиИзм);
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Глючек с запросом, ничего не возвращает в ТЗ
Ответ #9 - 22. Мая 2007 :: 16:05
Печать  
Сделай Отладка(1) и выполни текст запроса в QA от MS SQL. посмотри сколько у тебя батчей.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать