Имя: Пароль:
1C
1С v8
Как оптимизировать запрос - долго выполняется
, ,
0 Adgjj
 
15.05.12
11:28
Запрос.Текст = "ВЫБРАТЬ
                  |    уатМестонахождениеТССрезПоследних.Колонна.Наименование КАК Колонна,
                  |    ВыработкаТС_ФТР.ТС.Наименование КАК НаимТС,
                  |    уатПервоначальныеСведенияТС.ГосударственныйНомер КАК ГосНомерТС,
                  |    уатПервоначальныеСведенияТС.ЕдиницаОборудования КАК ЕдОборуд,
                  |    СУММА(ВыработкаТС_ФТР.КоличествоЧасов) КАК ВремяВНаряде,
                  |    ВыработкаТС_ФТР.КоличествоКмГруз + ВыработкаТС_ФТР.КоличествоКмПорожний КАК ПробегОбщий,
                  |    СУММА(уатРасходГСМнаТС.РасходПоФакту) КАК РасходПоФакту,
                  |    уатРасходГСМнаТС.ГСМ,
                  |    уатПервоначальныеСведенияТС.ОсновноеСредство
                  |ИЗ
                  |    РегистрНакопления.ВыработкаТС_ФТР КАК ВыработкаТС_ФТР
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.уатРасходГСМнаТС КАК уатРасходГСМнаТС
                  |        ПО ВыработкаТС_ФТР.ПутЛист.Ссылка = уатРасходГСМнаТС.Регистратор.Ссылка
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
                  |        ПО (уатПервоначальныеСведенияТС.ОсновноеСредство = ВыработкаТС_ФТР.ТС)
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС.СрезПоследних(&Дата2, ) КАК уатМестонахождениеТССрезПоследних
                  |        ПО (уатПервоначальныеСведенияТС.ОсновноеСредство = уатМестонахождениеТССрезПоследних.ТС)
                  |ГДЕ
                  |    ВыработкаТС_ФТР.Период МЕЖДУ &Дата1 И &Дата2
                  |    И ВыработкаТС_ФТР.Активность
                  |    И ВыработкаТС_ФТР.ПутЛист.Проведен
                  |    И ВыработкаТС_ФТР.ПутЛист.Рассчитан
                  |    И уатРасходГСМнаТС.Период МЕЖДУ &Дата1 И &Дата2
                  |    И уатРасходГСМнаТС.Активность
                  |    И уатРасходГСМнаТС.Регистратор.Проведен
                  |    И уатРасходГСМнаТС.Регистратор.Рассчитан
                  |  ";
                  Если НомерТранспортноеСредство <> Справочники.ОсновныеСредства.ПустаяСсылка() Тогда
                       Запрос.Текст = Запрос.Текст + "
                   |    И уатПервоначальныеСведенияТС.ОсновноеСредство = &ТС ";
                   КонецЕсли;
                   Если Колонна <> Справочники.уатКолонны.ПустаяСсылка() Тогда
                   Запрос.Текст = Запрос.Текст + "
                   |    И уатМестонахождениеТССрезПоследних.Колонна = &Колонна ";
                   КонецЕсли;
                   Запрос.Текст = Запрос.Текст + "
                  //|";

                  |СГРУППИРОВАТЬ ПО
                  |    уатПервоначальныеСведенияТС.ГосударственныйНомер,
                  |    уатМестонахождениеТССрезПоследних.Колонна.Наименование,
                  |    ВыработкаТС_ФТР.ТС.Наименование,
                  |    уатПервоначальныеСведенияТС.ЕдиницаОборудования,
                  |    уатРасходГСМнаТС.ГСМ,
                  |    уатПервоначальныеСведенияТС.ОсновноеСредство,
                  |    ВыработкаТС_ФТР.КоличествоКмГруз + ВыработкаТС_ФТР.КоличествоКмПорожний
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ГосНомерТС";
1 Alex S D
 
15.05.12
11:30
|ИЗ
                  |    РегистрНакопления.ВыработкаТС_ФТР - а здесь нельзя виртуальные таблицы использовать?
2 Alex S D
 
15.05.12
11:30
ВыработкаТС_ФТР.Период МЕЖДУ &Дата1 И &Дата2
                  |    И ВыработкаТС_ФТР.Активность
                  |    И ВыработкаТС_ФТР.ПутЛист.Проведен
                  |    И ВыработкаТС_ФТР.ПутЛист.Рассчитан это надо перенести в параметры вирт. таблицы этого регистра
3 zladenuw
 
15.05.12
11:31
в пакеты добавь где берешь остатки и уже по виртуальным таблицам делай соединение. будет быстрее
4 mikecool
 
15.05.12
11:31
|    И уатРасходГСМнаТС.Период МЕЖДУ &Дата1 И &Дата2
                  |    И уатРасходГСМнаТС.Активность
                  |    И уатРасходГСМнаТС.Регистратор.Проведен
                  |    И уатРасходГСМнаТС.Регистратор.Рассчитан
   как минимум в условия соединения перенести
5 Adgjj
 
15.05.12
11:31
(1) это самодельный регистр
6 Alex S D
 
15.05.12
11:32
(5) и что ?
7 mikecool
 
15.05.12
11:32
(5) прикольно, и чо? 1С не добавляет автоматом виртуалы? )
8 Adgjj
 
15.05.12
11:36
я с 1С редко сталкиваюсь)) с пакетами никогда не работала, про то, что виртуальные таблицы сами добаляются не в курсе, где их увидеть?
9 zladenuw
 
15.05.12
11:36
в конструкторе запросов
10 vis_tmp
 
15.05.12
11:38
Фотку?
11 Alex S D
 
15.05.12
11:41
(10) неправильно.., надо "Фотку!"
12 mikecool
 
15.05.12
11:42
(11) а после - водки!
13 Alex375
 
15.05.12
11:47
(0) Вопрос немного не потеме, но ответ поможет автору получить нормальный ответ: каков у тебя уровень владения 1С?
14 Adgjj
 
15.05.12
11:48
да вы наверно сами не знаете...
15 Adgjj
 
15.05.12
11:48
(13) начальный
16 Alex S D
 
15.05.12
11:49
да, мы ниче не знаем, так гадаем..
17 acsent
 
15.05.12
11:50
а что в твой регистр пишут непроведенные регистраторы?
18 acsent
 
15.05.12
11:51
весь косяк в обращении через точку к регистратору
19 Adgjj
 
15.05.12
11:53
(17) спасибо, а
|    И ВыработкаТС_ФТР.Активность
тоже можно убрать?
20 Alex375
 
15.05.12
11:56
"Активность" требуется только если не через виртуальные таблицы обращаешься. Если же используются виртуальные таблицы регистров, тогда там "Активность" и не выбрать.
21 Alex375
 
15.05.12
11:59
Еще если условия перенести из секции "ГДЕ" в секцию соединений "ПО" так же увеличится производительность, причем может очень существенно. Об этом писали в (4)
22 Adgjj
 
15.05.12
11:59
(20) большое спасибо!
23 Adgjj
 
15.05.12
11:59
(21) спс попробую
24 Alex375
 
15.05.12
12:06
(23) будут вопросы, пиши ;)