Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 19:05

Ошибка скул сервера

Автор GRADUS, 08 окт 2013, 23:09

0 Пользователей и 1 гость просматривают эту тему.

GRADUS

Цитата: Dethmontt от 09 окт 2013, 12:54
Цитата: GRADUS от 08 окт 2013, 23:10ВЫБРАТЬ
   ВЫБОР
      КОГДА ЕСТЬNULL(ВЫБОР
               КОГДА ЕСТЬNULL(ВЫБОР
                        КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                           ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                        ИНАЧЕ ОстаткиРозн.Номенклатура
                     КОНЕЦ, 0) = 0
                  ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
               ИНАЧЕ ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ
            КОНЕЦ, 0) = 0
         ТОГДА ПродажиПолные.Номенклатура
      ИНАЧЕ ВЫБОР
            КОГДА ЕСТЬNULL(ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ, 0) = 0
               ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
            ИНАЧЕ ВЫБОР
                  КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                     ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                  ИНАЧЕ ОстаткиРозн.Номенклатура
               КОНЕЦ
         КОНЕЦ
   КОНЕЦ КАК Номенклатура,
Мне приснилось что ли?

3 уровня вложенности и что?
Это не

Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Выбор
    Когда
        Тогда
Конец
Конец
Конец
Конец
Конец
Конец
Конец
Конец
Конец
Конец
Конец
Конец


Такие запросы, где 3 выбора работают везде. В т.ч. этот запрос работает в файловой версии с отбором и клиент-серверной без отбора.

И даже если я уберу эту честь запроса, ошибка остается. Так же хочу напомнить, что чтобы такое не писать используют вложенный запрос, при преобразовании в скуле будут теже кейсы.

Самая обычная конструкция приведена тобой. Которая не может быть изменена без вложенного запроса.

Dethmontt

В иначе - тоже вложенность.

Когда делаешь отбор у тебя примерно такой запрос получется

Где ВЫБРАТЬ
   ВЫБОР
      КОГДА ЕСТЬNULL(ВЫБОР
               КОГДА ЕСТЬNULL(ВЫБОР
                        КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                           ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                        ИНАЧЕ ОстаткиРозн.Номенклатура
                     КОНЕЦ, 0) = 0
                  ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
               ИНАЧЕ ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ
            КОНЕЦ, 0) = 0
         ТОГДА ПродажиПолные.Номенклатура
      ИНАЧЕ ВЫБОР
            КОГДА ЕСТЬNULL(ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ, 0) = 0
               ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
            ИНАЧЕ ВЫБОР
                  КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                     ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                  ИНАЧЕ ОстаткиРозн.Номенклатура
               КОНЕЦ
         КОНЕЦ
   КОНЕЦ = ТвоеЗначение
И т.д.
Добавлено: 09 окт 2013, 14:12


Если очень хочется разобраться что не так. Технологический журнал включай, посмотришь на свой запрос в SQL
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

GRADUS

Цитата: Dethmontt от 09 окт 2013, 14:11
В иначе - тоже вложенность.

Когда делаешь отбор у тебя примерно такой запрос получется

Где ВЫБРАТЬ
   ВЫБОР
      КОГДА ЕСТЬNULL(ВЫБОР
               КОГДА ЕСТЬNULL(ВЫБОР
                        КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                           ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                        ИНАЧЕ ОстаткиРозн.Номенклатура
                     КОНЕЦ, 0) = 0
                  ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
               ИНАЧЕ ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ
            КОНЕЦ, 0) = 0
         ТОГДА ПродажиПолные.Номенклатура
      ИНАЧЕ ВЫБОР
            КОГДА ЕСТЬNULL(ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ, 0) = 0
               ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
            ИНАЧЕ ВЫБОР
                  КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                     ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                  ИНАЧЕ ОстаткиРозн.Номенклатура
               КОНЕЦ
         КОНЕЦ
   КОНЕЦ = ТвоеЗначение
И т.д.
Добавлено: 09 окт 2013, 14:12


Если очень хочется разобраться что не так. Технологический журнал включай, посмотришь на свой запрос в SQL

Ошибка именно при отборе появляется и никогда иначе.

Dethmontt

А при таком отборе то же валиться?
Номенклатура = ссылка на номенклатуру
Без обращений через точку
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Ты же наверное понимаешь что точка это вложенный запрос в эту вот лабуду
ВЫБРАТЬ
   ВЫБОР
      КОГДА ЕСТЬNULL(ВЫБОР
               КОГДА ЕСТЬNULL(ВЫБОР
                        КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                           ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                        ИНАЧЕ ОстаткиРозн.Номенклатура
                     КОНЕЦ, 0) = 0
                  ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
               ИНАЧЕ ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ
            КОНЕЦ, 0) = 0
         ТОГДА ПродажиПолные.Номенклатура
      ИНАЧЕ ВЫБОР
            КОГДА ЕСТЬNULL(ВЫБОР
                     КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                        ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                     ИНАЧЕ ОстаткиРозн.Номенклатура
                  КОНЕЦ, 0) = 0
               ТОГДА ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
            ИНАЧЕ ВЫБОР
                  КОГДА ЕСТЬNULL(ОстаткиРозн.Номенклатура, 0) = 0
                     ТОГДА ПеремещениеСОптаНаМагазин.Номенклатура
                  ИНАЧЕ ОстаткиРозн.Номенклатура
               КОНЕЦ
         КОНЕЦ
   КОНЕЦ
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

GRADUS

Цитата: Dethmontt от 09 окт 2013, 16:23
А при таком отборе то же валиться?
Номенклатура = ссылка на номенклатуру
Без обращений через точку

Нет, не валится.

Точка это не вложенный запрос в эту лабуду, он как бы немного раньше делает отбор. Т.е. + 1 кейс в любом использовании номенклатуры в запросе.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск