Есть такая конструкция в запросе, нужны данные партнера контрагента, а если есть головной контрагент, то данные от его партнера.

```1c
    ВЫБОР
    КОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент ЕСТЬ NULL
    ТОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер.Ссылка
    ИНАЧЕ Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер.Ссылка
    КОНЕЦ КАК Партнер,
    ВЫБОР
    КОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент ЕСТЬ NULL
    ТОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер.Код
    ИНАЧЕ Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер.Код
    КОНЕЦ КАК ПартнерКод,
    ВЫБОР
    КОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент ЕСТЬ NULL
    ТОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер.Наименование
    ИНАЧЕ Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер.Наименование
    КОНЕЦ КАК ПартнерНаим,
```

Можно как-то упростить, выбрать сразу несколько полей в одном условии?
---
выбрать несколько полей в одном условии нельзя. Условия для ПОЛЯ.
Если очень хочется, то можно в отдельной временной таблице получить итоговые ссылки по условию и уже использовать их. Но не факт, то это упростит код.

Еще можно несколько сократить сами условия в данном случае:

```1c
    (ЕСТЬNULL(Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер, Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер)) КАК Партнер,
    (ЕСТЬNULL(Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер, Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер)).Код КАК Код,
    (ЕСТЬNULL(Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер, Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер)).Наименование КАК Наименование
```
---
Можно как-то упростить, выбрать сразу несколько полей в одном условии?Нет, но можно выбрать просто контрагента, а потом уже левым соединением выловить код и наименование и не тащить их через всю выборку аж для двух контрагентов одновременно.
---
ИМХО лучшим решением оказалось объединить подходы

```1c
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    (ЕСТЬNULL(Контрагенты.ГоловнойКонтрагент.Партнер, Контрагенты.Партнер)) КАК Партнер,
    (ЕСТЬNULL(Контрагенты.ГоловнойКонтрагент.Партнер, Контрагенты.Партнер)).Код КАК ПартнерКод,
    (ЕСТЬNULL(Контрагенты.ГоловнойКонтрагент.Партнер, Контрагенты.Партнер)).Наименование КАК ПартнерНаим
    ПОМЕСТИТЬ
    ВТ_ПартнерыГоловныхПодразделений
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
```

И прицепил к основному запросу по контрагенту.
---
выбрать несколько полей в одном условии нельзя. Условия для ПОЛЯ.
Если очень хочется, то можно в отдельной временной таблице получить итоговые ссылки по условию и уже использовать их. Но не факт, то это упростит код.

Еще можно несколько сократить сами условия в данном случае:

```1c
    (ЕСТЬNULL(Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер, Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер)) КАК Партнер,
    (ЕСТЬNULL(Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер, Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер)).Код КАК Код,
    (ЕСТЬNULL(Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер, Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер)).Наименование КАК Наименование
```
---
так можно выбирать (не очень оптимально, за то все понятно)

Выбрать
ЕстьNull(Гол.Партнер,Контр.Партнер) как Партнер,
ЕстьNull(Гол.Партнер.Код,Контр.Партнер.Код) как ПартнерКод,
ЕстьNull(Гол.Партнер.Наименование,Контр.Партнер.Наименование) как ПартнерНаименование,
---
если на контрагенте не заполнен головной контрагент, то там не будет null. Там будет ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
---
головной контрагент есть у вида контрагента = обособленное подразделение, у остальных нет. Запрос рабочий. УТ А+ 11.4.13
---
значит Контрагент составного вида, у одного есть реквизит ГоловнойКонтрагент, у другого нет.
Тогда быстрее проверять тип у Контрагент, чем у каждого объекта дергать ГоловнойКонтрагент
---
Можно как-то упростить, выбрать сразу несколько полей в одном условии?Нет, но можно выбрать просто контрагента, а потом уже левым соединением выловить код и наименование и не тащить их через всю выборку аж для двух контрагентов одновременно.
---
Просто поинтересоваться, шаблонизация такого вида

```1c
    ТекстЗапроса = "..."
    + ВыборДанныхПартнера("Ссылка") + " КАК Партнер,
    + ВыборДанныхПартнера("Код") + " КАК ПартнерКод,
    + ВыборДанныхПартнера("Наименование") + " КАК ПартнерНаим,
    ..."

    Функция ВыборДанныхПартнера(стр)
    возврат "|ВЫБОР
    | КОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент ЕСТЬ NULL
    | ТОГДА Продажи.АналитикаУчетаПоПартнерам.Контрагент.Партнер." + стр +"
    | ИНАЧЕ Продажи.АналитикаУчетаПоПартнерам.Контрагент.ГоловнойКонтрагент.Партнер." + стр +"
    |КОНЕЦ"
    КонецФункции;
```

Нормально или изврат..? (или то же самое но с параметрами)
---
ИМХО лучшим решением оказалось объединить подходы

```1c
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    (ЕСТЬNULL(Контрагенты.ГоловнойКонтрагент.Партнер, Контрагенты.Партнер)) КАК Партнер,
    (ЕСТЬNULL(Контрагенты.ГоловнойКонтрагент.Партнер, Контрагенты.Партнер)).Код КАК ПартнерКод,
    (ЕСТЬNULL(Контрагенты.ГоловнойКонтрагент.Партнер, Контрагенты.Партнер)).Наименование КАК ПартнерНаим
    ПОМЕСТИТЬ
    ВТ_ПартнерыГоловныхПодразделений
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
```

И прицепил к основному запросу по контрагенту.