#std435

Ограничение на использование конструкции "ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ" в запросах

1.1.

При разработке запросов учитывайте, что в клиент-серверном варианте с СУБД PostgreSQL производительность запросов с конструкцией ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ существенно снижается. Особенно если таких конструкций две и более.

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

Например, исходный запрос:

ВЫБРАТЬ
    ЕСТЬNULL(ПланПродаж.Номенклатура, ФактическиеПродажи.Номенклатура) КАК Номенклатура,
    ЕСТЬNULL(ПланПродаж.Сумма, 0) КАК СуммаПлан,
    ЕСТЬNULL(ФактическиеПродажи.Сумма, 0) КАК СуммаФакт
ИЗ
    ПланПродаж КАК ПланПродаж
        ПОЛНОЕ СОЕДИНЕНИЕ ФактическиеПродажи КАК ФактическиеПродажи
        ПО ПланПродаж.Номенклатура = ФактическиеПродажи.Номенклатура

может быть реализован без ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ так:

ВЫБРАТЬ
    ПланФактПродаж.Номенклатура КАК Номенклатура,
    СУММА(ПланФактПродаж.СуммаПлан) КАК СуммаПлан,
    СУММА(ПланФактПродаж.СуммаФакт) КАК СуммаФакт
ИЗ
    (ВЫБРАТЬ
        ПланПродаж.Номенклатура КАК Номенклатура,
        ПланПродаж.Сумма КАК СуммаПлан,
        0 КАК СуммаФакт
    ИЗ
        ПланПродаж КАК ПланПродаж

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ФактическиеПродажи.Номенклатура,
    0,
    ФактическиеПродажи.Сумма
ИЗ
    ФактическиеПродажи КАК ФактическиеПродажи) КАК ПланФактПродаж

СГРУППИРОВАТЬ ПО
    ПланФактПродаж.Номенклатура
1.2.

Исключение: случаи, когда запрос объективно нельзя переписать без ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ.

Для СУБД PostgreSQL платформа 1С:Предприятие автоматически заменяет эту конструкцию на эквивалентную исполнимую форму, сохраняя атрибуты запроса: ПЕРВЫЕ, РАЗЛИЧНЫЕ, УПОРЯДОЧИТЬ ПО.

В таких случаях не нужно механически убирать ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ только ради самого запрета.

2.

Недопустимо одновременно использовать ПОЛНОЕ СОЕДИНЕНИЕ и обращение к табличным частям из раздела ВЫБРАТЬ.

Требование связано с особенностями выполнения таких запросов на PostgreSQL и необходимостью переносимости прикладных решений на эту СУБД.

См. также
Проверки

#bslls:FullOuterJoinQuery

#acc:70

Источник

https://its.1c.ru/db/v8std#content:435