8.х Запрос на несвязанные элементы

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

  1. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Добрый вечер.
    Подскажите пожалуйста как справиться с задачей.
    Существует таблица, в которой элементы связаны между собой, если ТрубаНом2 одной строки равен ТрубаНом1 другой строки.
    Как получить крайние строки, которые связаны только с одной стороны (либо сверху, либо снизу)?

    ТрубаНом1 ТрубаНом2
    1111110 1111111
    1111111 1111112
    1111112 1111113
    1111113 1111114
    1111115
    1111116
    1111116 1111117
    1111117 1111118
    1111118 1111119
    1111119 1111120
    Красным отмечены строки, которые нужно получить
    Попробовал что-то типа:
    Код:
     "ВЫБРАТЬ
              |    Сварка.ТрубаНом1,
              |    Сварка.ТрубаНом2,
              |    Сварка1.ТрубаНом1 КАК ТрубаНом11,
              |    Сварка1.ТрубаНом2 КАК ТрубаНом21,
              |ИЗ
              |    РегистрСведений.Сварка КАК Сварка
              |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Сварка КАК Сварка1
              |        ПО (Сварка.ТрубаНом2 = Сварка1.ТрубаНом1
              |                ИЛИ Сварка.ТрубаНом1 = Сварка1.ТрубаНом2)";
    Не то пальто.
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Код:
    ВЫБРАТЬ
        1111110 КАК ТрубаНом1,
        1111111 КАК ТрубаНом2
    ПОМЕСТИТЬ ВТ_ИсходныеДанные
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111111,
        1111112
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111112,
        1111113
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111113,
        1111114
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111115,
        1111116
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111116,
        1111117
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111117,
        1111118
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111118,
        1111119
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        1111119,
        1111120
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_ИсходныеДанные.ТрубаНом1,
        ВТ_ИсходныеДанные.ТрубаНом2
    ИЗ
        ВТ_ИсходныеДанные КАК ВТ_ИсходныеДанные
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИсходныеДанные КАК ВТ_ИсходныеДанныеКопия
            ПО ВТ_ИсходныеДанные.ТрубаНом1 = ВТ_ИсходныеДанныеКопия.ТрубаНом2
    ГДЕ
        ВТ_ИсходныеДанныеКопия.ТрубаНом1 ЕСТЬ NULL
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        ВТ_ИсходныеДанные.ТрубаНом1,
        ВТ_ИсходныеДанные.ТрубаНом2
    ИЗ
        ВТ_ИсходныеДанные КАК ВТ_ИсходныеДанные
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИсходныеДанные КАК ВТ_ИсходныеДанныеКопия
            ПО ВТ_ИсходныеДанные.ТрубаНом2 = ВТ_ИсходныеДанныеКопия.ТрубаНом1
    ГДЕ
        ВТ_ИсходныеДанныеКопия.ТрубаНом2 ЕСТЬ NULL 
    GreenSH нравится это.
  3. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Не понятно, почему Вы объединяли значения полей.
    Цифры - это значения.
    Существует таблица СВАРКА, в которой два поля "ТрубаНом1" и "ТрубаНом2".
    В таблице раскидал пример, каким образом строки соединены между собой.
    --- Объединение сообщений, 20 июн 2016 ---
    Получилось!!
    Последнее редактирование: 20 июн 2016
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Не совсем понятно, какой результат должен быть?
  5. TopicStarter Overlay
    GreenSH
    Offline

    GreenSH Опытный в 1С

    Регистрация:
    1 май 2015
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Первая часть запроса от shurikvz совсем не нужна. А вот вторая понадобилась.
    В результате должны остаться строки, у которых одно из значений или оба из полей ТрубаНом1 ТрубаНом2, не повторяются в других строках

    В первом сообщении красным выделены строки, которые должны остаться в запросе

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