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

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 или кнопку "Обновить" в браузере.
Рекламное место пустует