8.х Выбор Когда Тогда Когда Тогда Когда Тогда

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Vitaly, 17 дек 2015.

  1. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Добрый день!
    Примерно Вот такой запрос у меня:
    Код:
    ВЫБОР
        КОГДА Условие1 ЕСТЬ НЕ NULL
            ТОГДА Условие1
        КОГДА Условие2 ЕСТЬ НЕ NULL
            ТОГДА Условие2
        КОГДА Условие3 ЕСТЬ НЕ NULL
            ТОГДА Условие3
    КОНЕЦ
    У меня в конкретном случае должно выполниться условие 2, а впечатление что первое не выполняется и далее код не идет.
    Как написать код в запросе чтобы он шел вниз до тех пор пока условие не выполнить?
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Правильно написать условие. Может там не NULL, а тупо ""
    Vitaly нравится это.
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А весь запрос можно. вы уверены что Условие у Вас может принимать NULL
    Vitaly нравится это.
  4. bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    328
    Симпатии:
    22
    Баллы:
    29
    Условия нужно делать по "нисходящей" последовательности, т.к. после успеха в вышестоящем нижестоящее даже не проверяется... т.е. если проверяется по суммам то правильно будет так:
    Код:
    ВЫБОР
        КОГДА Сумма > 1000
            ТОГДА "Больше тыщи"
        КОГДА Сумма > 500
            ТОГДА "Больле пятисот"
        КОГДА Сумма > 250
            ТОГДА "Больше ..."
    КОНЕЦ
    Я бы посоветовал проверить логическую последовательность. Ну и как уже посоветовали проверять корректно пустое значение (оно то может быть не только NULL)
    Vitaly нравится это.
  5. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Вот код:
    Код:
    ВЫБОР
        КОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель.Родитель ЕСТЬ НЕ NULL
            ТОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель.Родитель
        КОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель ЕСТЬ НЕ NULL
            ТОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель
        КОГДА ТЗИтог.ПодразделениеОрганизации.Родитель ЕСТЬ НЕ NULL
            ТОГДА ТЗИтог.ПодразделениеОрганизации.Родитель
        КОГДА ТЗИтог.ПодразделениеОрганизации ЕСТЬ НЕ NULL
            ТОГДА ТЗИтог.ПодразделениеОрганизации
    КОНЕЦ
    Когда выкидываю первую проверку все работает если два уровня подтягивается верное подразделение, а так подтягивается NULL.
    Как я понимаю нужно не с NULL, а с чем-то другим сверять?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.565
    Симпатии:
    716
    Баллы:
    204
    мдя :)....оно и не будет NULL, если есть ссылка на Подразделение, а если ссылки нет, то вообще все будет NULL, независимо от уровня иерархии.

    Задача какая?
    Vitaly нравится это.
  7. bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    328
    Симпатии:
    22
    Баллы:
    29
    может там значение ссылочного типа, как например Справочники.Подразделения.ПустаяСсылка()? впринципе может быть пустая строка (если пустое представление)
    Vitaly нравится это.
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.565
    Симпатии:
    716
    Баллы:
    204
    Справочники.Подразделения.ПустаяСсылка - не содержится в БД, оно генерируется платформой, поэтому в запросе вида:

    Код:
    Выбрать
    Значение(Справочники.Подразделения.ПустаяСсылка) КАК ПОЛЕ1
    Поместить ВТ_Данные
    
    Выбрать Поле1.Наименование из ВТ_Данные 
    будет NULL

    upload_2015-12-17_15-4-50.png
  9. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Необходимо выбрать головное подразделение. У нас ограничение иерархии - 3 уровня.
    --- Объединение сообщений, 17 дек 2015 ---
    Я пробовал через пустую ссылку тоже - не сработало.
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    В ИЕРАРХИИ сделайте.
    Vitaly нравится это.
  11. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Что имеете ввиду? Соединить со справочником подразделения?
    --- Объединение сообщений, 18 дек 2015 ---
    Я обычное В ИЕРАРХИИ использую для ограничения отбора, не понятно как тут использовать.
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    А если иерархия поменяется, будет больше?

    Сделайте как в книжке Хрусталевой по запросам. там есть пример как получить иерархию
    Vitaly нравится это.
  13. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Нет этой книги у меня, тогда сделаю отдельным циклом и функцию напишу, так проще. Правда на скорости работы отразится отрицательно.
  14. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Нашел решение, сделал вот так:
    Код:
    ВЫБОР
        КОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Наименование <> ""
            ТОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель.Родитель
        КОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель.Наименование <> ""
            ТОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Родитель
        КОГДА ТЗИтог.ПодразделениеОрганизации.Родитель.Наименование <> ""
            ТОГДА ТЗИтог.ПодразделениеОрганизации.Родитель
        КОГДА ТЗИтог.ПодразделениеОрганизации.Наименование <> ""
            ТОГДА ТЗИтог.ПодразделениеОрганизации
    КОНЕЦ
    Все работает, всем большое спасибо за участие в дискуссии.
    Спасибо.
  15. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Жееееесть
    Vitaly нравится это.
  16. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Да, но как быть.

Поделиться этой страницей