|   |   | 
| 
 | Помогите оптимизировать запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        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.ПорядокСтрок | |||
| 1
    
        unregistered 02.10.18✎ 12:28 | 
        ИМХО, проще написать заново, чем разобраться в этом бреду. Такое ощущение, что автор запроса - бухгалтер или финик (знатоков арифметики), а не программист (предположительно знаток математики и алгоритмов). Весь текст запроса - изложение на тему "какую цифирь откуда взять и куда положить" без относительно системной логики расчета.     | |||
| 2
    
        DSSS 02.10.18✎ 12:31 | 
        использовать короткие псевдонимы таблиц     | |||
| 3
    
        antihacker 02.10.18✎ 12:31 | 
        Не обязательно разобраться в деталях. Хотя бы примерную идею. А так все мы любим писать по своему )     | |||
| 4
    
        singlych 02.10.18✎ 12:44 | 
        Ну к примеру РегистрНакопления.ПланПоБюджетуФинансированияПоОбязательствам с полем УтвержденныйБюджет и отборами по периоду и бюджету пихнуть в ВТ, а из нее уже выбирать по регистратору и классификации.     | |||
| 5
    
        unregistered 02.10.18✎ 12:53 | 
        (3) > все мы любим писать по своему
 Суть не в оформлении. Суть в том, как собираются данные. В (0) данные собираются через *опу. У автора нет системного понимания сути регистров вообще и конкретных в частности - для чего они были сделаны авторами конфигурации и как там храниться информация. А по оформлению приведённый текст приводит к кровотечению из глаз при просмотре дольше трёх минут. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |