Имя: Пароль:
1C
1С v8
v8: Оптимизация Партионного запроса УПП 1.3.18 - 2
0 Gav_Gav
 
10.01.12
13:41
v8: Оптимизация Партионного запроса УПП 1.3.18

Вопрос,к HADGEHOGs и Fragster, не совсем понятно чем закончилась оптимизация запроса ЗаполнитьЗапросПартийНаСкладахУпр?

Стоит такая же проблема, ПУ по производительности, работает неудовлетворительно. Пытался средствами SQL сделать:
http://1c-gmix.webaltera.ru/index.php?option=com_content&view=article&id=30:-1-&catid=18&Itemid=36
не взлетело, придется внимательно приглядеться к этому запросу.
1 Gav_Gav
 
11.01.12
09:38
неужели никто не оптимизировал ЗаполнитьЗапросПартийНаСкладахУпр? =(
2 braynt
 
11.01.12
09:45
Тоже изменил запрос. Сделал через временную таблицу. Стало быстрее
3 Gav_Gav
 
11.01.12
09:53
(2) посмотреть можно?
4 braynt
 
12.01.12
10:01
Если ты посмотришь типовой запрос. То выбор из регистра сведений списанныеТовары  выполняется несколько раз. Вот и её я как раз и помещаю во временную таблицу.

Запрос.Текст =
   "ВЫБРАТЬ *
   |ПОМЕСТИТЬ ТоварыСписанные
   |ИЗ
   |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
   |ГДЕ
   |    СписанныеТовары.Регистратор = &ОсновнойДокумент
   |
   |ИНДЕКСИРОВАТЬ ПО
   |Склад,
   |Номенклатура
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТоварыСписанные.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
   |    ПартииТоваровНаСкладах.Номенклатура,
   |    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
   |    "+ПараметрыЗапроса_ДатаОприходования.ДокОприходованияДата_Выбор+"
   |    ПартииТоваровНаСкладах.Склад,
   |    ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
   |    ПартииТоваровНаСкладах.СерияНоменклатуры,
   |    ПартииТоваровНаСкладах.Качество,
   |    ПартииТоваровНаСкладах.Заказ,
   |    ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
   |    ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
   |    ПартииТоваровНаСкладах.СтатусПартии,
   |    ВЫБОР
   |        КОГДА ТоварыСписанные.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
   |            ТОГДА 0
   |        ИНАЧЕ 1
   |    КОНЕЦ КАК ЧислоСерияНоменклатуры,
   |    ВЫБОР
   |        КОГДА ТоварыСписанные.ДокументПартии = НЕОПРЕДЕЛЕНО
   |            ТОГДА 0
   |        ИНАЧЕ ВЫБОР
   |                КОГДА ТоварыСписанные.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
   |                    ТОГДА 0
   |                ИНАЧЕ 1
   |            КОНЕЦ
   |    КОНЕЦ КАК ЧислоДокументОприходования,
   |    ВЫБОР
   |        КОГДА ТоварыСписанные.ЗаказПартии = НЕОПРЕДЕЛЕНО
   |            ТОГДА 0
   |        ИНАЧЕ ВЫБОР
   |                КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
   |                    ТОГДА 1
   |                ИНАЧЕ 0
   |            КОНЕЦ
   |    КОНЕЦ КАК ЧислоЗаказ,
   |    ВЫБОР
   |        КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
   |            ТОГДА 1
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК ЧислоСтатусПартии
   |ИЗ
   |    ТоварыСписанные КАК ТоварыСписанные
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
   |                &Дат, Организация = &Организация
   |            и    Номенклатура В
   |                    (ВЫБРАТЬ Различные
   |                        СписанныеТовары.Номенклатура
   |                    ИЗ
   |                        ТоварыСписанные КАК СписанныеТовары)" + ?(ВестиПартионныйУчетПоСкладам, "    
   |        И (Склад В
   |            (ВЫБРАТЬ Различные
   |                СписанныеТовары.Склад
   |            ИЗ
   |                ТоварыСписанные КАК СписанныеТовары
   |           ) ИЛИ Склад = &ПустойСклад)", "") + ") КАК ПартииТоваровНаСкладах
   |        По ТоварыСписанные.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
   |            И ТоварыСписанные.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
   |            И (ВЫБОР
   |                КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
   |                    ТОГДА ИСТИНА
   |                ИНАЧЕ ВЫБОР
   |                        КОГДА ТоварыСписанные.Качество = &ПустоеКачество
   |                            ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
   |                        ИНАЧЕ ПартииТоваровНаСкладах.Качество = ТоварыСписанные.Качество
   |                    КОНЕЦ
   |            КОНЕЦ)
   |            " + ?(ВестиПартионныйУчетПоСкладам, "И (ПартииТоваровНаСкладах.Склад = ТоварыСписанные.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)", "") + "
   |            И (ВЫБОР
   |                КОГДА ТоварыСписанные.ДопустимыйСтатус1 <> &ПустойСтатус
   |                        ИЛИ ТоварыСписанные.ДопустимыйСтатус2 <> &ПустойСтатус
   |                        ИЛИ ТоварыСписанные.ДопустимыйСтатус3 <> &ПустойСтатус
   |                        ИЛИ ТоварыСписанные.ДопустимыйСтатус4 <> &ПустойСтатус
   |                    ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = ТоварыСписанные.ДопустимыйСтатус1
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = ТоварыСписанные.ДопустимыйСтатус2
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = ТоварыСписанные.ДопустимыйСтатус3
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = ТоварыСписанные.ДопустимыйСтатус4
   |                ИНАЧЕ ИСТИНА
   |            КОНЕЦ)
   |            И (ВЫБОР
   |                КОГДА ТоварыСписанные.СписыватьТолькоПоЗаказу = ИСТИНА
   |                    ТОГДА ВЫБОР
   |                            КОГДА ПартииТоваровНаСкладах.Заказ <> ТоварыСписанные.ЗаказПартии
   |                                ТОГДА ВЫБОР
   |                                        КОГДА (НЕ ТоварыСписанные.ЗаказПартии = НЕОПРЕДЕЛЕНО)
   |                                            ТОГДА ЛОЖЬ
   |                                        ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
   |                                    КОНЕЦ
   |                            ИНАЧЕ ИСТИНА
   |                        КОНЕЦ
   |                ИНАЧЕ ВЫБОР
   |                        КОГДА ПартииТоваровНаСкладах.Заказ <> ТоварыСписанные.ЗаказПартии
   |                            ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
   |                        ИНАЧЕ ИСТИНА
   |                    КОНЕЦ
   |            КОНЕЦ)
   |            И (ТоварыСписанные.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
   |                ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры)
   |
   |УПОРЯДОЧИТЬ ПО
   |    ЧислоСерияНоменклатуры,
   |    ЧислоДокументОприходования,
   |    ЧислоЗаказ,
   |    ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобственные, " Убыв", "") + ",
   |    "+ПараметрыЗапроса_ДатаОприходования.ДокОприходованияДата_Сортировка+"
   |    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
   |    ПартииТоваровНаСкладах.Склад
   |ИТОГИ ПО
   |    НомерСтрокиДокумента";