| 
    
            
         
         | 
    
  | 
Помогите транслировать/найти запрос 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  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |