Имя: Пароль:
1C
1C 7.7
v7: 1СPP, ужасно тормозит типизация документа в прямом запросе
0 daviels
 
18.11.15
09:56
Доброго дня.

Пишу вот такой запрос, используя класс "ПрямойЗапрос"

ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ВыборОстаткиОбороты.Документ КАК [Документ $Документ]
    |    --ВЫРАЗИТЬ($Журнал.ТекущийДокумент КАК char(9)) КАК [Документ $Документ]
    |    ,ВыборОстаткиОбороты.Документ_вид КАК [Документ_вид $ВидДокумента]
    |    ,ВыборОстаткиОбороты.Товар КАК [Товар $Субконто]
    |    ,ВыборОстаткиОбороты.Товар_вид КАК [Товар_вид $ВидСубконто]
    |    ,ВыборОстаткиОбороты.МестоХранения КАК [МестоХранения $Субконто]
    |    ,ВыборОстаткиОбороты.МестоХранения_вид КАК [МестоХранения_вид $ВидСубконто]
    |    ,РеквизитыТовара.ГруппаТовара КАК [ГруппаТовара $Справочник.Группы]
    |    ,РеквизитыТовара.ВидНоменклатуры КАК [ВидНоменклатуры $Справочник.ВидыНоменклатуры]
    |   ,РеквизитыТовара.ВидБизнеса КАК [ВидБизнеса $Справочник.ВидыБизнеса]  
    |    ,(ВыборОстаткиОбороты.НачОстКоличество) КАК НачОстКоличество
    |    ,(ВыборОстаткиОбороты.КонОстКоличество) КАК КонОстКоличество
    |    ,(ВыборОстаткиОбороты.НачОстСумма) КАК НачОстСумма
    |    ,(ВыборОстаткиОбороты.КонОстСумма) КАК КонОстСумма
    |    ,(ВыборОстаткиОбороты.ПриходКоличество) КАК ПриходКоличество  
    |    ,(ВыборОстаткиОбороты.ПриходСумма) КАК ПриходСумма
    |    ,(ВыборОстаткиОбороты.РасходКоличество) КАК РасходКоличество
    |    ,(ВыборОстаткиОбороты.РасходСумма) КАК РасходСумма
    |    ,ВЫБОР
    |        КОГДА ВыборОстаткиОбороты.Документ_вид = $ВидДокумента.РасходнаяНакладная
    |        ТОГДА ВыборНакладных.Выручка
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ВыборОстаткиОбороты.Документ_вид = $ВидДокумента.ФактическаяПродажа
    |                ТОГДА ВыборПродаж.Выручка
    |                ИНАЧЕ ВыборОстаткиОбороты.РасходСумма
    |            КОНЕЦ
    |    КОНЕЦ КАК Выручка
    
    |ИЗ
    |    (ВЫБРАТЬ
    |        :ПустойИД КАК Документ
    |        ,:ПустойИД КАК Документ_вид
    |        ,ОстаткиОборотыОсновной.Субконто1 КАК Товар
    |        ,ОстаткиОборотыОсновной.Субконто1_вид КАК Товар_вид
    |       ,ОстаткиОборотыОсновной.Субконто2 КАК МестоХранения
    |        ,ОстаткиОборотыОсновной.Субконто2_вид КАК МестоХранения_вид
    |        ,СУММА(ОстаткиОборотыОсновной.КоличествоНачальныйОстаток) КАК НачОстКоличество
    |        ,СУММА(ОстаткиОборотыОсновной.СуммаНачальныйОстаток) КАК НачОстСумма
    |       ,СУММА(ОстаткиОборотыОсновной.КоличествоКонечныйОстаток) КАК КонОстКоличество
    |        ,СУММА(ОстаткиОборотыОсновной.СуммаКонечныйОстаток) КАК КонОстСумма
    |        ,0 КАК ПриходКоличество
    |        ,0 КАК ПриходСумма
    |       ,0 КАК РасходКоличество
    |        ,0 КАК РасходСумма
    |    ИЗ
    |        $БИОстаткиОбороты.Основной(:ДатаНач,:ДатаКон~,ПЕРИОД,ДвиженияИГраницыПериода,#СчетаДт,(Номенклатура,МестаХранения),(Количество,Сумма),(" + ТекстУсловияЗапроса + ")) КАК ОстаткиОборотыОсновной
    |   СГРУППИРОВАТЬ
    |        ОстаткиОборотыОсновной.Субконто1
    |        ,ОстаткиОборотыОсновной.Субконто1_вид
    |       ,ОстаткиОборотыОсновной.Субконто2
    |        ,ОстаткиОборотыОсновной.Субконто2_вид    
    //|    ) КАК ВыборОстатки
    |    ОБЪЕДИНИТЬ
    |    ВЫБРАТЬ
    |        ОборотыОсновной.ТекущийДокумент КАК Документ
    |        ,ОборотыОсновной.ВидДокумента КАК Документ_вид
    |        ,ОборотыОсновной.Субконто1 КАК Товар
    |        ,ОборотыОсновной.Субконто1_вид КАК Товар_вид
    |        ,ОборотыОсновной.Субконто2 КАК МестоХранения
    |        ,ОборотыОсновной.Субконто2_вид КАК МестоХранения_вид
    |        ,0 КАК НачОстКоличество
    |        ,0 КАК НачОстСумма
    |        ,0 КАК КонОстКоличество
    |        ,0 КАК КонОстСумма
    |        ,СУММА(ОборотыОсновной.КоличествоОборотДт) КАК ПриходКоличество  
    |        ,СУММА(ОборотыОсновной.СуммаОборотДт) КАК ПриходСумма
    |        ,СУММА(ОборотыОсновной.КоличествоОборотКт) КАК РасходКоличество
    |        ,СУММА(ОборотыОсновной.СуммаОборотКт) КАК РасходСумма
    |    ИЗ
    |        $БИОбороты.Основной(:ДатаНач,:ДатаКон~,ДОКУМЕНТ,#СчетаДт,(Номенклатура,МестаХранения),,,(Количество,Сумма),(" + ТекстУсловияЗапроса + ")) КАК ОборотыОсновной
    |    СГРУППИРОВАТЬ
    |        ОборотыОсновной.ТекущийДокумент
    |        ,ОборотыОсновной.ВидДокумента
    |        ,ОборотыОсновной.Субконто1
    |        ,ОборотыОсновной.Субконто1_вид
    |        ,ОборотыОсновной.Субконто2
    |        ,ОборотыОсновной.Субконто2_вид    
    //|    ) КАК ВыборОбороты  collate_1C
    |    ) КАК ВыборОстаткиОбороты
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |        #vt_product КАК РеквизитыТовара        
    |    ПО
    |        (ВЫРАЗИТЬ(ПРАВО(ВыборОстаткиОбороты.Товар,9) КАК char(9))  = РеквизитыТовара.Товар)
    ";

в выборке примерно 6500 документов
Так вот, как только включаю типизацию [Документ $Документ]
Запрос выполняется 5-6 минут, без типизации 1,5-2 сек.

Как можно ускорить? А может и нельзя никак ускорить???
1 Дык ё
 
18.11.15
10:29
не использовать ПрямойЗапрос?
2 ikea
 
18.11.15
10:41
А если сделать типизацию документа через журнал документов с соединением по документу?
3 daviels
 
18.11.15
10:43
(2) делал я так ... не помогло
4 daviels
 
18.11.15
10:50
При чем я делал и так:
Отключал типизацию, получаю данные в ИТ

когда вывожу в печатную форму преобразую значение
обMetaDataWork = СоздатьОбъект("MetaDataWork");
обMetaDataWork.ЗначениеИзСтрокиБД("Документ." + СокрЛП(ИтоговаяТаблица.Документ_вид),ИтоговаяТаблица.Документ);

время исполнения так же ДОЛГО
5 sapphire
 
18.11.15
11:02
КАКАЯ СВОЛОЧЬ РУССИФИЦИРОВАЛА ПРЯМЫЕ ЗАПРОСЫ?!
6 sapphire
 
18.11.15
11:05
(0) Если не знаете как хранятся данные - не пишите прямые запросы.
Соединение с _1SJOURN(NOLOCK)
там есть поле IDDOCDEF - оно отвечает за тип
Сгруппировать по типу и типизировать отдельно
7 sapphire
 
18.11.15
11:06
(3) Значит, неправильно делал
8 daviels
 
18.11.15
13:52
(7) ты прав.
Тема закрыта