Имя: Пароль:
1C
1С v8
Ошибка SQL при выполнении запроса в СКД
0 animatic
 
17.06.14
16:53
Добрый день, столкнулся с такой проблемой, есть запрос
ВЫБРАТЬ
    МЕСЯЦ(ТоварыНаСкладахОбороты.Период) КАК Месяц,
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
            ТОГДА ТоварыНаСкладахОбороты.Регистратор.Контрагент
        ИНАЧЕ ВЫБОР
                КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
                        И ТоварыНаСкладахОбороты.КоличествоПриход > 0
                    ТОГДА ТоварыНаСкладахОбороты.Регистратор.СкладОтправитель
                ИНАЧЕ ВЫБОР
                        КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ОтчетПроизводстваЗаСмену)
                            ТОГДА ТоварыНаСкладахОбороты.Регистратор.Склад
                        ИНАЧЕ ВЫБОР
                                КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
                                        И ТоварыНаСкладахОбороты.КоличествоРасход > 0
                                    ТОГДА ТоварыНаСкладахОбороты.Регистратор.СкладПолучатель
                                ИНАЧЕ ВЫБОР
                                        КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ТребованиеНакладная)
                                            ТОГДА ТоварыНаСкладахОбороты.Регистратор.Склад
                                        ИНАЧЕ ВЫБОР
                                                КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.КомплектацияНоменклатуры)
                                                    ТОГДА ТоварыНаСкладахОбороты.Регистратор.Номенклатура
                                            КОНЕЦ
                                    КОНЕЦ
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Содержание,
    ТоварыНаСкладахОбороты.КоличествоПриход КАК КоличествоПриход,
    ТоварыНаСкладахОбороты.КоличествоДопПриход КАК КоличествоДопПриход,
    ВЫБОР
        КОГДА НЕ ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.РегистрацияПотерь)
            ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход
    КОНЕЦ КАК КоличествоРасход,
    ТоварыНаСкладахОбороты.КоличествоДопРасход КАК КоличествоДопРасход,
    ВЫБОР
        КОГДА ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.РегистрацияПотерь)
            ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход
    КОНЕЦ КАК Потери
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(
            &НачалоПериода,
            &КонецПериода,
            Регистратор,
            Склад = &Склад
                И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) <> ТИП(Документ.КорректировкаЗаписейРегистров)
В консоли запросов нормально работает, если же делаю его в СКД, то программа вылетает с ошибкой СУБД MS SQL "Выражения CASE могут быть только до 10 уровня". Что не так в запросе, почему не работает в СКД?
До этого каждое поле с условием выбирал отдельно, но не нашел в СКД возможности выводить это потом в одно поле, например "Содержание". Поэтому решил выбирать таким способом. Вообще нужен отчет о движение ТМЦ, такого вида: месяц, потом содержание, где указывается с какого склада или от какого поставщика или из производства пришли ТМЦ, затем количество с суммой, то же самое по расходу. (Еще потом нужны будут потери и накладные расходы, но до этого потом дойду)
1 МихаилМ
 
17.06.14
16:57
замените
"ИНАЧЕ ВЫБОР"

на просто "ИНАЧЕ"
2 DS
 
17.06.14
16:58
ВЫБОР
    КОГДА ТОГДА
    КОГДА ТОГДА
    КОГДА ТОГДА
    КОГДА ТОГДА
    КОГДА ТОГДА
    КОГДА ТОГДА
...
    ИНАЧЕ
КОНЕЦ

?
3 animatic
 
17.06.14
17:02
Спасибо за советы, давно не работал с запросами уже)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн