Вот такой текст запроса:
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 релиз.