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