Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Помогите оптимизировать запрос

Помогите оптимизировать запрос
Я
   antihacker
 
02.10.18 - 11:43
Всем привет !

Вот работающий запрос. Но мне кажется его можно сократить. Но не вижу как. Есть идеи ?

ВЫБРАТЬ ПЕРВЫЕ 1
ИмпортФорма127Акт.Регистратор КАК Регистратор
ПОМЕСТИТЬ ВТ_ИмпортФорма127АктПосРег
ИЗ
РегистрСведений.ИмпортФорма127Акт.СрезПоследних
(&ПериодОТ,  Бюджет В (&вхБюджет)) КАК ИмпортФорма127Акт  
УПОРЯДОЧИТЬ ПО
Период УБЫВ
;
ВЫБРАТЬ
Ф127.НомерРаздела КАК НомерРаздела,
Ф127.Поступление КАК Поступление,    
Ф127.УтвержденныйБюджет    

ПОМЕСТИТЬ ВТ_ИмпортФорма127
ИЗ       
ВТ_ИмпортФорма127АктПосРег КАК ВТ_ИмпортФорма127АктПосРег         
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИмпортФорма127Акт КАК Ф127
ПО ВТ_ИмпортФорма127АктПосРег.Регистратор = Ф127.Регистратор 
 
;
ВЫБРАТЬ
ВЫБОР КОГДА ВТ_ИмпортФорма127.НомерРаздела = "I" 
      ТОГДА 1 
       
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "II" 
      ТОГДА 2 
        
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "III" И  НЕ ВТ_ИмпортФорма127.Поступление 
      ТОГДА 3
        
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "III" И  ВТ_ИмпортФорма127.Поступление 
      ТОГДА 4
        
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "IV"  И  НЕ ВТ_ИмпортФорма127.Поступление 
      ТОГДА 5    
        
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "IV"  И  ВТ_ИмпортФорма127.Поступление 
      ТОГДА 6    
        
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "VI"  И  НЕ ВТ_ИмпортФорма127.Поступление 
      ТОГДА 7    
        
      КОГДА ВТ_ИмпортФорма127.НомерРаздела = "VI"  И  ВТ_ИмпортФорма127.Поступление 
      ТОГДА 8                
КОНЕЦ КАК ПорядокСтрок,
      
ВТ_ИмпортФорма127.НомерРаздела КАК НомерРаздела,
ВТ_ИмпортФорма127.Поступление КАК Поступление,
СУММА(ВТ_ИмпортФорма127.УтвержденныйБюджет) КАК УтвержденныйБюджет127,
0 КАК УтвержденныйБюджет 

ПОМЕСТИТЬ ВТ_Итоговый127

ИЗ  ВТ_ИмпортФорма127

СГРУППИРОВАТЬ ПО
ВТ_ИмпортФорма127.НомерРаздела, 
ВТ_ИмпортФорма127.Поступление  


;

ВЫБРАТЬ
ВТ_Итоговый127.ПорядокСтрок,
ВТ_Итоговый127.УтвержденныйБюджет127,
0 КАК УтвержденныйБюджет
 
ПОМЕСТИТЬ ВТ_ГотовыйИмпорт127

ИЗ  ВТ_Итоговый127 

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

ВЫБРАТЬ
    2 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоОбязательствамНаПериод.СуммаЯнварь
    +  ППоБФПоОбязательствамНаПериод.СуммаФевраль
    +  ППоБФПоОбязательствамНаПериод.СуммаМарт
    +  ППоБФПоОбязательствамНаПериод.СуммаАпрель
    +  ППоБФПоОбязательствамНаПериод.СуммаМай
    +  ППоБФПоОбязательствамНаПериод.СуммаИюнь
    +  ППоБФПоОбязательствамНаПериод.СуммаИюль
    +  ППоБФПоОбязательствамНаПериод.СуммаАвгуст
    +  ППоБФПоОбязательствамНаПериод.СуммаСентябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаОктябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаНоябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоОбязательствам
 
   КАК ППоБФПоОбязательствамНаПериод  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоРасходам)
   
   И   ППоБФПоОбязательствамНаПериод.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Бюджет В (&вхБюджет)      
 
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоОбязательствамНаПериод.СуммаЯнварь
    +  ППоБФПоОбязательствамНаПериод.СуммаФевраль
    +  ППоБФПоОбязательствамНаПериод.СуммаМарт
    +  ППоБФПоОбязательствамНаПериод.СуммаАпрель
    +  ППоБФПоОбязательствамНаПериод.СуммаМай
    +  ППоБФПоОбязательствамНаПериод.СуммаИюнь
    +  ППоБФПоОбязательствамНаПериод.СуммаИюль
    +  ППоБФПоОбязательствамНаПериод.СуммаАвгуст
    +  ППоБФПоОбязательствамНаПериод.СуммаСентябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаОктябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаНоябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоОбязательствам
 
   КАК ППоБФПоОбязательствамНаПериод  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоРасходам)
   
   И   ППоБФПоОбязательствамНаПериод.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Бюджет В (&вхБюджет)      
   И   ППоБФПоОбязательствамНаПериод.КлассификацияРасходов.ФКР В (&вхСписокФКР3) 
 

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоПоступлениям.СуммаЯнварь
    +  ППоБФПоПоступлениям.СуммаФевраль
    +  ППоБФПоПоступлениям.СуммаМарт
    +  ППоБФПоПоступлениям.СуммаАпрель
    +  ППоБФПоПоступлениям.СуммаМай
    +  ППоБФПоПоступлениям.СуммаИюнь
    +  ППоБФПоПоступлениям.СуммаИюль
    +  ППоБФПоПоступлениям.СуммаАвгуст
    +  ППоБФПоПоступлениям.СуммаСентябрь
    +  ППоБФПоПоступлениям.СуммаОктябрь
    +  ППоБФПоПоступлениям.СуммаНоябрь
    +  ППоБФПоПоступлениям.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоПоступлениям
 
   КАК ППоБФПоПоступлениям  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоПоступлениям)
   
   И   ППоБФПоПоступлениям.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоПоступлениям.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоПоступлениям.Бюджет В (&вхБюджет)   
   И   ППоБФПоПоступлениям.КлассификацияПоступлений.ПодклассПоступления В (&вхСписокПодклассПоступления4) 

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоОбязательствамНаПериод.СуммаЯнварь
    +  ППоБФПоОбязательствамНаПериод.СуммаФевраль
    +  ППоБФПоОбязательствамНаПериод.СуммаМарт
    +  ППоБФПоОбязательствамНаПериод.СуммаАпрель
    +  ППоБФПоОбязательствамНаПериод.СуммаМай
    +  ППоБФПоОбязательствамНаПериод.СуммаИюнь
    +  ППоБФПоОбязательствамНаПериод.СуммаИюль
    +  ППоБФПоОбязательствамНаПериод.СуммаАвгуст
    +  ППоБФПоОбязательствамНаПериод.СуммаСентябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаОктябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаНоябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоОбязательствам
 
   КАК ППоБФПоОбязательствамНаПериод  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоРасходам)
   
   И   ППоБФПоОбязательствамНаПериод.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Бюджет В (&вхБюджет)      
   И   ППоБФПоОбязательствамНаПериод.КлассификацияРасходов.ФКР В (&вхСписокФКР5) 
   
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    6 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоПоступлениям.СуммаЯнварь
    +  ППоБФПоПоступлениям.СуммаФевраль
    +  ППоБФПоПоступлениям.СуммаМарт
    +  ППоБФПоПоступлениям.СуммаАпрель
    +  ППоБФПоПоступлениям.СуммаМай
    +  ППоБФПоПоступлениям.СуммаИюнь
    +  ППоБФПоПоступлениям.СуммаИюль
    +  ППоБФПоПоступлениям.СуммаАвгуст
    +  ППоБФПоПоступлениям.СуммаСентябрь
    +  ППоБФПоПоступлениям.СуммаОктябрь
    +  ППоБФПоПоступлениям.СуммаНоябрь
    +  ППоБФПоПоступлениям.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоПоступлениям
 
   КАК ППоБФПоПоступлениям  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоПоступлениям)
   
   И   ППоБФПоПоступлениям.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоПоступлениям.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоПоступлениям.Бюджет В (&вхБюджет)   
   И   ППоБФПоПоступлениям.КлассификацияПоступлений.ПодклассПоступления В (&вхСписокПодклассПоступления6) 
   
   
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    7 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоПоступлениям.СуммаЯнварь
    +  ППоБФПоПоступлениям.СуммаФевраль
    +  ППоБФПоПоступлениям.СуммаМарт
    +  ППоБФПоПоступлениям.СуммаАпрель
    +  ППоБФПоПоступлениям.СуммаМай
    +  ППоБФПоПоступлениям.СуммаИюнь
    +  ППоБФПоПоступлениям.СуммаИюль
    +  ППоБФПоПоступлениям.СуммаАвгуст
    +  ППоБФПоПоступлениям.СуммаСентябрь
    +  ППоБФПоПоступлениям.СуммаОктябрь
    +  ППоБФПоПоступлениям.СуммаНоябрь
    +  ППоБФПоПоступлениям.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоПоступлениям
 
   КАК ППоБФПоПоступлениям  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоПоступлениям)
   
   И   ППоБФПоПоступлениям.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоПоступлениям.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоПоступлениям.Бюджет В (&вхБюджет)   
   И   ППоБФПоПоступлениям.КлассификацияПоступлений.ПодклассПоступления В (&вхСписокПодклассПоступления7) 
   

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    8 КАК ПорядокСтрок,
    0 КАК УтвержденныйБюджет127,
    
    СУММА(ППоБФПоОбязательствамНаПериод.СуммаЯнварь
    +  ППоБФПоОбязательствамНаПериод.СуммаФевраль
    +  ППоБФПоОбязательствамНаПериод.СуммаМарт
    +  ППоБФПоОбязательствамНаПериод.СуммаАпрель
    +  ППоБФПоОбязательствамНаПериод.СуммаМай
    +  ППоБФПоОбязательствамНаПериод.СуммаИюнь
    +  ППоБФПоОбязательствамНаПериод.СуммаИюль
    +  ППоБФПоОбязательствамНаПериод.СуммаАвгуст
    +  ППоБФПоОбязательствамНаПериод.СуммаСентябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаОктябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаНоябрь
    +  ППоБФПоОбязательствамНаПериод.СуммаДекабрь
    ) КАК УтвержденныйБюджет
 ИЗ
         РегистрНакопления.ПланПоБюджетуФинансированияПоОбязательствам
 
   КАК ППоБФПоОбязательствамНаПериод  ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.УтвержденныйПланФинансированияПоРасходам)
   
   И   ППоБФПоОбязательствамНаПериод.Период >= НАЧАЛОПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Период <= КОНЕЦПЕРИОДА(&ПериодОТ, ГОД)
   И   ППоБФПоОбязательствамНаПериод.Бюджет В (&вхБюджет)      
   И   ППоБФПоОбязательствамНаПериод.КлассификацияРасходов.ФКР В (&вхСписокФКР8) 
;

ВЫБРАТЬ
ВТ_ГотовыйИмпорт127.ПорядокСтрок,
ВТ_ГотовыйИмпорт127.УтвержденныйБюджет127,    
ВТ_ГотовыйОрганизация.УтвержденныйБюджет

ИЗ       
ВТ_ГотовыйИмпорт127 КАК ВТ_ГотовыйИмпорт127         
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ГотовыйОрганизация  КАК ВТ_ГотовыйОрганизация
ПО ВТ_ГотовыйИмпорт127.ПорядокСтрок = ВТ_ГотовыйОрганизация.ПорядокСтрок 

УПОРЯДОЧИТЬ ПО   ВТ_ГотовыйИмпорт127.ПорядокСтрок
 
 
   unregistered
 
1 - 02.10.18 - 12:28
ИМХО, проще написать заново, чем разобраться в этом бреду. Такое ощущение, что автор запроса - бухгалтер или финик (знатоков арифметики), а не программист (предположительно знаток математики и алгоритмов). Весь текст запроса - изложение на тему "какую цифирь откуда взять и куда положить" без относительно системной логики расчета.
   DSSS
 
2 - 02.10.18 - 12:31
использовать короткие псевдонимы таблиц
   antihacker
 
3 - 02.10.18 - 12:31
Не обязательно разобраться в деталях. Хотя бы примерную идею. А так все мы любим писать по своему )
   singlych
 
4 - 02.10.18 - 12:44
Ну к примеру РегистрНакопления.ПланПоБюджетуФинансированияПоОбязательствам с полем УтвержденныйБюджет и отборами по периоду и бюджету пихнуть в ВТ, а из нее уже выбирать по регистратору и классификации.
   unregistered
 
5 - 02.10.18 - 12:53
(3) > все мы любим писать по своему

Суть не в оформлении. Суть в том, как собираются данные.
В (0) данные собираются через *опу. У автора нет системного понимания сути регистров вообще и конкретных в частности - для чего они были сделаны авторами конфигурации и как там храниться информация.
А по оформлению приведённый текст приводит к кровотечению из глаз при просмотре дольше трёх минут.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует