Имя: Пароль:
1C
1С v8
Помогите транслировать/найти запрос t-sql в 1с
0 zharkin
 
06.05.13
13:07
Помогите найти место в конфигурации 1с, откуда может вызываться подобный запрос!
Вот текст запроса в t-sql
exec sp_executesql N'SELECT
ISNULL(CAST(T2._Q_000_F_001 AS NUMERIC(27, 2)),P1),
T2._Q_000_F_000RRef,
T1._Q_001_F_000_TYPE,
T1._Q_001_F_000_RTRef,
T1._Q_001_F_000_RRRef
FROM #tt3 T1 WITH(NOLOCK)
LEFT OUTER JOIN #tt2 T2 WITH(NOLOCK)
LEFT OUTER JOIN _Document125 T3 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P3 AND T2._Q_000_F_002_RRRef = T3._IDRRef
LEFT OUTER JOIN _Document87 T4 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P4 AND T2._Q_000_F_002_RRRef = T4._IDRRef
LEFT OUTER JOIN _Document116 T5 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P5 AND T2._Q_000_F_002_RRRef = T5._IDRRef
LEFT OUTER JOIN _Document131 T6 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P6 AND T2._Q_000_F_002_RRRef = T6._IDRRef
LEFT OUTER JOIN _Document117 T7 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P7 AND T2._Q_000_F_002_RRRef = T7._IDRRef
LEFT OUTER JOIN _Document61 T8 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P8 AND T2._Q_000_F_002_RRRef = T8._IDRRef
LEFT OUTER JOIN _Document86 T9 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = @P9 AND T2._Q_000_F_002_RRRef = T9._IDRRef
LEFT OUTER JOIN _Document120 T10 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = P10 AND T2._Q_000_F_002_RRRef = T10._IDRRef
LEFT OUTER JOIN _Document115 T11 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = P11 AND T2._Q_000_F_002_RRRef = T11._IDRRef
LEFT OUTER JOIN _Document62 T12 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = P12 AND T2._Q_000_F_002_RRRef = T12._IDRRef
LEFT OUTER JOIN _Document118 T13 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = P13 AND T2._Q_000_F_002_RRRef = T13._IDRRef
LEFT OUTER JOIN _Document119 T14 WITH(NOLOCK)
ON T2._Q_000_F_002_TYPE = @P2 AND T2._Q_000_F_002_RTRef = P14 AND T2._Q_000_F_002_RRRef = T14._IDRRef
ON ((T2._Q_000_F_002_TYPE = T1._Q_001_F_000_TYPE AND T2._Q_000_F_002_RTRef = T1._Q_001_F_000_RTRef AND T2._Q_000_F_002_RRRef = T1._Q_001_F_000_RRRef) OR (CASE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000007D THEN T3._Fld2891_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000057 THEN T4._Fld1639_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000074 THEN T5._Fld2429_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000083 THEN T6._Fld3052_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000075 THEN T7._Fld2483_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000003D THEN T8._Fld775_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000056 THEN T9._Fld1586_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000078 THEN T10._Fld2633_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000073 THEN T11._Fld2379_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000003E THEN T12._Fld832_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000076 THEN T13._Fld2539_TYPE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000077 THEN T14._Fld2589_TYPE ELSE CAST(NULL AS BINARY(1)) END = T1._Q_001_F_000_TYPE AND CASE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000007D THEN T3._Fld2891_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000057 THEN T4._Fld1639_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000074 THEN T5._Fld2429_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000083 THEN T6._Fld3052_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000075 THEN T7._Fld2483_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000003D THEN T8._Fld775_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000056 THEN T9._Fld1586_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000078 THEN T10._Fld2633_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000073 THEN T11._Fld2379_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000003E THEN T12._Fld832_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000076 THEN T13._Fld2539_RTRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000077 THEN T14._Fld2589_RTRef ELSE CAST(NULL AS BINARY(4)) END = T1._Q_001_F_000_RTRef AND CASE WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000007D THEN T3._Fld2891_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000057 THEN T4._Fld1639_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000074 THEN T5._Fld2429_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000083 THEN T6._Fld3052_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000075 THEN T7._Fld2483_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000003D THEN T8._Fld775_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000056 THEN T9._Fld1586_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000078 THEN T10._Fld2633_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000073 THEN T11._Fld2379_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x0000003E THEN T12._Fld832_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000076 THEN T13._Fld2539_RRRef WHEN T2._Q_000_F_002_TYPE = 0x08 AND T2._Q_000_F_002_RTRef = 0x00000077 THEN T14._Fld2589_RRRef ELSE CAST(NULL AS BINARY(16)) END = T1._Q_001_F_000_RRRef))
WHERE (ISNULL(CAST(T2._Q_000_F_001 AS NUMERIC(27, 2)),P1) > P1)', N'P1 numeric(1,0),@P2 varbinary(1),@P3 varbinary(4),@P4 varbinary(4),@P5 varbinary(4),@P6 varbinary(4),@P7 varbinary(4),@P8 varbinary(4),@P9 varbinary(4),P10 varbinary(4),P11 varbinary(4),P12 varbinary(4),P13 varbinary(4),P14 varbinary(4)', 0, 0x08, 0x0000007D, 0x00000057, 0x00000074, 0x00000083, 0x00000075, 0x0000003D, 0x00000056, 0x00000078, 0x00000073, 0x0000003E, 0x00000076, 0x00000077
2 бомболюк
 
06.05.13
13:11
по мне так это показ формы списка какого то журнала документов.
3 zharkin
 
06.05.13
13:11
не могу понять, откуда такой запрос вызывается. конфа УТ 10.2
4 zharkin
 
06.05.13
13:12
(2) у меня тоже закралось подозрение, что это какой то список документов
5 piter3
 
06.05.13
13:13
сначала выяснить, что есть documentsxxx
6 shuhard
 
06.05.13
13:13
(3)[не могу понять, откуда такой запрос вызывается]
ну уж форум точно не может угадать что стоит за  Fld2891 в твоем экземпляре УТ 10.2
7 zharkin
 
06.05.13
13:15
все документы _Document я выяснил - это ПКО, РКО и все банковские доки. Не понятно вот это FROM #tt3 T1 WITH(NOLOCK)
8 SherifSP
 
06.05.13
13:15
ТС, тебе на битву экстрасенсов нужно, там тебе точно скажут откуда вызывается данный код)
9 mikecool
 
06.05.13
13:26
#tt3 это временная таблица
ищи ПОМЕСТИТЬ
10 1Сергей
 
06.05.13
13:29
(9) = INTO
11 Sammo
 
06.05.13
13:29
1. Откуда взят запрос?
2. Зачем оно надо?
Попробуй поискать - обращение к реквизиту составного типа, который имеет тип 125 и т.д.
12 zharkin
 
06.05.13
13:32
(11)
1. запрос взят из профайлера - этот запрос очень грузит процессор
2. найти и оптимизировать этот запрос или вообще от него отказаться
13 Sammo
 
06.05.13
13:33
Выбрать
ЕстьNULL(числовой реквизит, 0),
Ссылка,
Ссылка
из
14 Sammo
 
06.05.13
13:34
(12) Включить технологический журнал и там смотреть долго выполняемые запросы 1с. После этого по времени и тесту свести со скулевым.
15 GANR
 
06.05.13
13:38
(0) Принцип деления пополам понимаешь? Делишь участок кода, на котором выполняется это запрос на 2 и тот, на котором запроса нет, отбрасываешь - и так, пока интервал не сведется к одной строчке кода, где и выполняется этот самый запрос. Все понятно???
16 GANR
 
06.05.13
13:43
Вот пример http://eco.sutd.ru/Study/Informat/mpd.html, только в нем идет речь о точке пересечения функции с осью Х, а у нас - о строчке кода в 1С, где выполняется запрос.
17 GANR
 
06.05.13
13:45
Есть, конечно, неприятный момент - в коде могу быть циклы.
18 Speshuric
 
06.05.13
13:52
(0)
1. Это запрос в котором соединяется 2 временные таблицы по реквизиту от поля составного типа. В нём есть что-то вроде:
ИЗ ВременнаяТаблица1 ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 ПО ВременнаяТаблица1.Док.Основание = ВременнаяТаблица2.Док
(может там и не основание, а какой-то другой рекивзит - это легко посмотреть, например по "_Fld2589_RRRef" )
2. Составные типы - зло, а временными таблицами надо уметь пользоваться.
19 zharkin
 
06.05.13
14:04
(18) составные типы к сожалению повсеместно используются в типовых конфигурациях.
20 zharkin
 
06.05.13
14:11
(18) да, это реквизит ДокументОснование из документа ПлатежныйОрдерПоступлениеДенежныхСредств
21 Speshuric
 
06.05.13
14:18
(19) Вот не надо лишнего на типовые наговаривать. Да, составные типы там используются, но условий соединения типа того что приведено выше там не встречается.
(20) Ну и искать по коду где есть "ПО " и через две точки "ДокументОснование". Можно глазами, можно выгрузить d MXL
22 Infsams654
 
06.05.13
14:23
(0) а для чего это нужно искать? Не нравится этот запрос t-sql, нужно предъявить 1С, что из этого места должно выглядеть по-другому ?
23 Speshuric
 
06.05.13
19:07
(14) Глупость сказал. Если ТЖ включить, то нафига сопоставлять? ТЖ и сам всё скажет.
24 Sammo
 
07.05.13
07:07
(23) Полуглупость. Имхо, про включение ТЖ - прав.
25 vde69
 
07.05.13
07:45
это RLS ...

"exec sp_executesql " - этим отличается рельса от прямого запроса
26 vde69
 
07.05.13
07:56
(25)+
а таблица #tt3 - это результат прямого запроса на который накладывается уже сама рельса.

ИХМО накладывание происходит внутри ХП из-за некоторых нюансов с правами.
27 zharkin
 
07.05.13
15:41
помогло включение ТЖ.
сделал такой файл настройки logcfg.xml
<?xml version="1.0" encoding="utf-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
 <dump create="false" />
 <log location="D:\1Clog\" history="168">
      <event>
        <eq property="Name" value="DBMSSQL"/>
        <ge property="Duration" value="40000"/>
      </event>
      <property name="Context"/>
 </log>
</config>
28 zharkin
 
07.05.13
15:48
получил текст модуля, который создавал запрос.
29 vde69
 
07.05.13
15:50
(28) и реально в модуле нашел этот запрос???
30 zharkin
 
07.05.13
15:53
(29)да. только он на языке 1С очень сильно отличается от t-sql
31 zharkin
 
07.05.13
15:53
оказалось не rls....
32 Speshuric
 
07.05.13
21:30
(28) Покажи хоть проблемное место в виде 1С-ного запроса.
33 Fragster
 
гуру
07.05.13
21:37
Где-то раньше есть определение Insert #tt3 Select..., вот в его сторону надо копать
34 TormozIT
 
гуру
12.05.13
10:57
Технологический журнал спасет.
35 ILM
 
гуру
12.05.13
16:42
Вопрос зачем уже задавали?
36 zharkin
 
13.05.13
15:12
(32) вот кусок проблемного запроса, особенно условие "Расчеты.Сделка.ДокументОснование = СведенияДок.КПКДокумент"

   ВЫБРАТЬ
       ЕСТЬNULL(Расчеты.СуммаВзаиморасчетовОстаток, 0) КАК СуммаВзаиморасчетовОстаток,
       Расчеты.Контрагент,
       СведенияДок.КПКДокумент
   ИЗ
       СведенияДок КАК СведенияДок
           ЛЕВОЕ СОЕДИНЕНИЕ Расчеты КАК Расчеты
           ПО (Расчеты.Сделка = СведенияДок.КПКДокумент
                   ИЛИ Расчеты.Сделка.ДокументОснование = СведенияДок.КПКДокумент)
   ГДЕ
       ЕСТЬNULL(Расчеты.СуммаВзаиморасчетовОстаток, 0) > 0