|
Упрощение запроса в 1С | ☑ | ||
---|---|---|---|---|
0
trialex3
27.09.21
✎
17:14
|
Добрый день. Дали мне тут старую чужую обработку что бы вытащить из нее запрос но она выбивает ошибку SQL вроде как ругается на большую вложенность условий. В запросе нашел такого монстра - это можно как то уменьшить?
(&ЧитатьСводныеДанные ИЛИ ВЫБОР КОГДА НДФЛСведенияОДоходах.КодПоОКТМО <> &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.КодПоОКТМО КОГДА ЕСТЬNULL(НДФЛСведенияОДоходах.ПодразделениеОрганизации.КодПоОКТМО, &ПустойКодПоОКТМО) <> &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.КодПоОКТМО ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.КодПоОКТМО = &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.КодПоОКТМО ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.КодПоОКТМО = &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.КодПоОКТМО ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.КодПоОКТМО = &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.КодПоОКТМО ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.КодПоОКТМО = &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.КодПоОКТМО КОНЕЦ ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.Родитель.КодПоОКТМО = &ПустойКодПоОКТМО ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.Родитель.КодПоОКТМО ИНАЧЕ ЕСТЬNULL(НДФЛСведенияОДоходах.ОбособленноеПодразделение.КодПоОКТМО, &ПустойКодПоОКТМО) КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ = &КодПоОКТМО) И (&ЧитатьСводныеДанные ИЛИ ВЫБОР КОГДА НДФЛСведенияОДоходах.КПП <> &ПустойКПП ТОГДА НДФЛСведенияОДоходах.КПП КОГДА ЕСТЬNULL(НДФЛСведенияОДоходах.ПодразделениеОрганизации.КПП, &ПустойКПП) <> &ПустойКПП ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.КПП ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.КПП = &ПустойКПП ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.КПП ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.КПП = &ПустойКПП ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.КПП ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.КПП = &ПустойКПП ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.КПП ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.КПП = &ПустойКПП ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.КПП КОНЕЦ ИНАЧЕ ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ВЫБОР КОГДА НЕ НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.Родитель.КПП = &ПустойКПП ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.Родитель.КПП ИНАЧЕ ЕСТЬNULL(НДФЛСведенияОДоходах.ОбособленноеПодразделение.КПП, &ПустойКПП) КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ = &КПП) КАК ДанныеДляОтчета |
|||
1
ДенисЧ
27.09.21
✎
17:16
|
НДФЛСведенияОДоходах.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель.КПП
Йоооо.... |
|||
2
Mikeware
27.09.21
✎
17:17
|
(1) надо "до седьмого колена"? :-)
|
|||
3
ДенисЧ
27.09.21
✎
17:19
|
(2) До 12го. И "выше чеки".
|
|||
4
trialex3
27.09.21
✎
17:19
|
(1) У меня 1С после такого запроса вообще не работает и предлагает либо выключиться либо перезагрузиться)
|
|||
5
ДенисЧ
27.09.21
✎
17:20
|
(4) Это она ещё по-доброму. А могла бы вылезти и в лицо дать...
|
|||
6
Mikeware
27.09.21
✎
17:21
|
(5) "лицо, ударившее данное лицо по лицу, данному лицу не известно!"©
|
|||
7
RomanYS
27.09.21
✎
17:22
|
(0) собрать предварительно табличку соответствий Подкразделение-КПП-ОКТМО и переда её параметром в запрос. Текст в (0) заменить на левое соединение с переданной ТЗ
|
|||
8
fisher
27.09.21
✎
17:26
|
По красоте, это надо бы в условия соединения.
|
|||
9
RomanYS
27.09.21
✎
17:30
|
(8) кстати вариант. Только условие всё равно многоэтажным останется, т.к. есть риск что на промежуточном этаже будет тоже заполнен КПП
|
|||
10
lodger
27.09.21
✎
17:33
|
суть дерева сводится к чтению ОКТМО+КПП из подразделения с поправкой на иерархию.
если уж прямо западло сделать один плоский запрос с постобработкой, то можно покурить шаманство https://infostart.ru/1c/articles/158512/ |
|||
11
Mikeware
27.09.21
✎
17:35
|
(10) ildarovich® рулит!
пару раз пытался повторить, без "подглядывания в первоисточник" не получалось... |
|||
12
hhhh
27.09.21
✎
17:41
|
(9) подразделений не так много, просто сделать временную таблицу по вычислению кпп, а в основной таблице уже вставлять готовый кпп из вт.
|
|||
13
RomanYS
27.09.21
✎
17:42
|
(12) это же в (7) предлагал
|
|||
14
fisher
27.09.21
✎
17:51
|
(11) Оно эффективно для глубоких иерархий с одной стороны и при этом работает только для всей иерархии справочника. То есть не всегда эффективно этот прием использовать.
|
|||
15
novichok79
27.09.21
✎
17:58
|
**бать! вот это case when царский
|
|||
16
novichok79
27.09.21
✎
17:59
|
по идее надо вытащить логику определения нужного родителя ПодразделениеОрганизации из запроса, перетащить ее куда-нибудь в код, а в запрос кидать нужное ПодразделениеОрганизации
|
|||
17
ejikbeznojek
27.09.21
✎
18:10
|
(0) А нельзя обработкой заполнить КПП и ОКТМО на определённых уровнях, запретить записывать незаполненные и запросом брать из этих уровней?
|
|||
18
Ненавижу 1С
гуру
27.09.21
✎
18:11
|
Выбор когда тогда можно написать без вложений
|
|||
19
Mikeware
27.09.21
✎
18:35
|
(14) "более эффективно для глубоких", ибо логарифм. ну и для следующих уровней тоже можно сделать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |