|
Помогите оптимизировать запрос | ☑ | ||
---|---|---|---|---|
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) данные собираются через *опу. У автора нет системного понимания сути регистров вообще и конкретных в частности - для чего они были сделаны авторами конфигурации и как там храниться информация. А по оформлению приведённый текст приводит к кровотечению из глаз при просмотре дольше трёх минут. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |