[РЕШЕНО] В запросе получить значения, которые не попали в другую таблицу

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем GreenSH, 31 май 2016.

  1. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.
    Вроде с виду все легко, но уже 3 дня не могу найти решение.
    В общем такая ситуация. Есть две таблицы: РегистрСведений.ТрубаВхКонт и РегистрСведений.ТрубаРаскладка.
    В первой таблице содержится полный список элементов, а во второй только часть их.
    Как сделать запрос, чтобы на выходе были элементы, которые не попали во вторую таблицу?

    Пытался сделать так:
    Код:
    "ВЫБРАТЬ
            |    ТрубаВхКонт.ТрубаНом,
            |    ТрубаРаскладка.ТрубаНом КАК ТрубаНом1
            |ИЗ
            |    РегистрСведений.ТрубаВхКонт КАК ТрубаВхКонт
            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТрубаРаскладка КАК ТрубаРаскладка
            |        ПО ТрубаВхКонт.ТрубаНом = ТрубаРаскладка.ТрубаНом
            |";
    
    Не получилось. Выдает данные двух таблиц.
  2. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.772
    Симпатии:
    509
    Баллы:
    204
    Левое-Правое соединение знаете про что ?
  3. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Знаю. Пробовал. Но почему-то результат такой же
    Код:
    "ВЫБРАТЬ
            |    ТрубаВхКонт.ТрубаНом,
            |    ТрубаРаскладка.ТрубаНом КАК ТрубаНом1
            |ИЗ
            |    РегистрСведений.ТрубаВхКонт КАК ТрубаВхКонт
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТрубаРаскладка КАК ТрубаРаскладка
            |        ПО ТрубаВхКонт.ТрубаНом = ТрубаРаскладка.ТрубаНом
            |";
    
  4. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.772
    Симпатии:
    509
    Баллы:
    204
    Чуток тупанул:) Тут походу без виртуальной таблицы не обойтись
    --- Объединение сообщений, 31 май 2016 ---
    Ну можно еще объединением, опять же, два этапа будет
  5. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Не нашел разницы. Результат тот же
    Код:
    "ВЫБРАТЬ
        |    ТрубаРаскладка.ТрубаНом
        |ПОМЕСТИТЬ  ВТ_ТрубаРаскладка
        |ИЗ
        |    РегистрСведений.ТрубаРаскладка КАК ТрубаРаскладка;
        |ВЫБРАТЬ
        |    ТрубаВхКонт.ТрубаНом
        |ИЗ
        |    РегистрСведений.ТрубаВхКонт КАК ТрубаВхКонт
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |ВТ_ТрубаРаскладка
        |ПО ВТ_ТрубаРаскладка.ТрубаНом = ТрубаВхКонт.ТрубаНом";
    Единственный плюс в вирт табл нашел, что можно в каждой из таблиц сделать условие и соединить.
    --- Объединение сообщений, 31 май 2016 ---
    А как можно сделать объединение двух таблиц и повесить на них общее условие. ( Скажем, чтобы выводились поля со значением, количество которых не превышает 1)???
  6. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.772
    Симпатии:
    509
    Баллы:
    204
    Вот вам нужно сделать сначала отбор только тех записей, которые есть во второй таблице. Далее запросом по второй таблице выбрать те записи, которых нет в виртуальной.
    GreenSH нравится это.
  7. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    А как выбрать те записи, которых нет в вирт таблице? В примере стоит знак "=". Если меняю на "<>" то вообще не разобраться по какому принципу выбирает.
  8. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Есть у кого-нибудь еще варианты реализации этой задачи?
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Выгребаем во временную таблицу все, что не должно попадать, вторым запросом выбираем записи с отбором ГДЕ Поле1 НЕ В (Выбрать поле1 из ВременнаяТаблицаИзПервогоЗапроса)
    GreenSH нравится это.
  10. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    А соединение при этом Левое?
    Код:
        "ВЫБРАТЬ
        |    ТрубаРаскладка.ТрубаНом
        |ПОМЕСТИТЬ  ВТ_ТрубаРаскладка
        |ИЗ
        |    РегистрСведений.ТрубаРаскладка КАК ТрубаРаскладка;
        |ВЫБРАТЬ
        |    ТрубаВхКонт.ТрубаНом
        |ИЗ
        |    РегистрСведений.ТрубаВхКонт КАК ТрубаВхКонт
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |ВТ_ТрубаРаскладка
        |ПО ТрубаВхКонт.ТрубаНом = ВТ_ТрубаРаскладка.ТрубаНом
        |ГДЕ ТрубаВхКонт.ТрубаНом НЕ В (ВТ_ТрубаРаскладка.ТрубаНом)";
  11. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Код:
    "ВЫБРАТЬ
    |    ТрубаВхКонт.ТрубаНом,
    |    ТрубаРаскладка.ТрубаНом КАК ТрубаНом1
    |ИЗ
    |    РегистрСведений.ТрубаВхКонт КАК ТрубаВхКонт
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТрубаРаскладка КАК ТрубаРаскладка
    |        ПО ТрубаВхКонт.ТрубаНом = ТрубаРаскладка.ТрубаНом
    |ГДЕ ТрубаРаскладка.ТрубаНом ЕСТЬ NULL";
  12. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Yahoooooo!
    Все работает!
    Всем огромное Спасибо!
    Отдельное Спасибо для nbIpKuH_BaH9I.-Happy-
  13. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Не за что. Но спасибо на форумах выражается иначе ;)
    GreenSH нравится это.
  14. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
  15. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Всем кто помог Вам получить какие-либо новые знания, помогли в решении Вашей проблемы, или просто Вы считаете нужным отблагодарить этого человека, у нас принято оказывать знак внимания в виде нажатия на ссылку "Мне нравится", что Вы, собственно, уже сделали. :)
  16. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Учел на будущее)
  17. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Лично для меня осталось загадкой, для чего вообще используется соединение, ну да ладно :)
  18. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Видимо автору это нужно. Задачу изначальную, кстати, он не описал. )))


    Отправлено из моего iPhone используя Tapatalk
  19. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Есть два мероприятия:
    1. Входной контроль трубы
    2. Раскладка трубы на трассе
    Эти мероприятия последовательные, т.е. раскладка трубы может быть только после входного контроля

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

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