К примеру есть Зарплата 3.1, в ней сотрудники. У сотрудников назначено произвольное число дополнительных реквизитов. Как получить линейную выборку сотрудника со всеми назначенными ему дополнительными реквизитами?

Сделал решение "в лоб":

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

    УПОРЯДОЧИТЬ ПО
    Наименование
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    КОЛИЧЕСТВО(ДопРеквизиты_2.Ссылка) КАК Порядок,
    ДопРеквизиты_1.Ссылка КАК Свойство,
    ДопРеквизиты_1.Наименование КАК Наименование
    ПОМЕСТИТЬ ВтРеквизитыПоПорядку
    ИЗ
    ДопРеквизиты КАК ДопРеквизиты_1
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДопРеквизиты КАК ДопРеквизиты_2
    ПО ДопРеквизиты_1.Наименование >= ДопРеквизиты_2.Наименование

    СГРУППИРОВАТЬ ПО
    ДопРеквизиты_1.Наименование,
    ДопРеквизиты_1.Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    СотрудникиДополнительныеРеквизиты.Ссылка КАК Ссылка,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 1
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство1,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 1
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение1,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 2
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство2,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 2
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение2,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 3
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство3,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 3
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение3,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 4
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство4,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 4
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение4,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 5
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство5,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 5
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение5,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 6
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство6,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 6
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение6,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 7
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство7,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 7
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение7,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 8
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство8,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 8
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение8,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 9
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство9,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 9
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение9,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 10
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство10,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 10
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение10,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 11
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство11,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 11
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение11,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 12
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство12,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 12
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение12,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 13
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство13,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 13
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение13,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 14
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство14,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 14
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение14,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 15
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство15,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 15
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение15,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 16
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство16,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 16
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение16,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 17
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство17,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 17
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение17,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 18
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство18,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 18
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение18,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 19
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство19,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 19
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение19,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 20
    ТОГДА СотрудникиДополнительныеРеквизиты.Свойство
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Свойство20,
    ВЫБОР
    КОГДА РеквизитыПоПорядку.Порядок = 20
    ТОГДА СотрудникиДополнительныеРеквизиты.Значение
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК Значение20
    ПОМЕСТИТЬ ВтРезультат
    ИЗ
    Справочник.Сотрудники.ДополнительныеРеквизиты КАК СотрудникиДополнительныеРеквизиты
    ЛЕВОЕ СОЕДИНЕНИЕ ВтРеквизитыПоПорядку КАК РеквизитыПоПорядку
    ПО СотрудникиДополнительныеРеквизиты.Свойство = РеквизитыПоПорядку.Свойство
    ГДЕ
    СотрудникиДополнительныеРеквизиты.Ссылка = &Сотрудник
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВтРезультат.Ссылка КАК Ссылка,
    МАКСИМУМ(ВтРезультат.Свойство1) КАК Свойство1,
    МАКСИМУМ(ВтРезультат.Значение1) КАК Значение1,
    МАКСИМУМ(ВтРезультат.Свойство2) КАК Свойство2,
    МАКСИМУМ(ВтРезультат.Значение2) КАК Значение2,
    МАКСИМУМ(ВтРезультат.Свойство3) КАК Свойство3,
    МАКСИМУМ(ВтРезультат.Значение3) КАК Значение3,
    МАКСИМУМ(ВтРезультат.Свойство4) КАК Свойство4,
    МАКСИМУМ(ВтРезультат.Значение4) КАК Значение4,
    МАКСИМУМ(ВтРезультат.Свойство5) КАК Свойство5,
    МАКСИМУМ(ВтРезультат.Значение5) КАК Значение5,
    МАКСИМУМ(ВтРезультат.Свойство6) КАК Свойство6,
    МАКСИМУМ(ВтРезультат.Значение6) КАК Значение6,
    МАКСИМУМ(ВтРезультат.Свойство7) КАК Свойство7,
    МАКСИМУМ(ВтРезультат.Значение7) КАК Значение7,
    МАКСИМУМ(ВтРезультат.Свойство8) КАК Свойство8,
    МАКСИМУМ(ВтРезультат.Значение8) КАК Значение8,
    МАКСИМУМ(ВтРезультат.Свойство9) КАК Свойство9,
    МАКСИМУМ(ВтРезультат.Значение9) КАК Значение9,
    МАКСИМУМ(ВтРезультат.Свойство10) КАК Свойство10,
    МАКСИМУМ(ВтРезультат.Значение10) КАК Значение10,
    МАКСИМУМ(ВтРезультат.Свойство11) КАК Свойство11,
    МАКСИМУМ(ВтРезультат.Значение11) КАК Значение11,
    МАКСИМУМ(ВтРезультат.Свойство12) КАК Свойство12,
    МАКСИМУМ(ВтРезультат.Значение12) КАК Значение12,
    МАКСИМУМ(ВтРезультат.Свойство13) КАК Свойство13,
    МАКСИМУМ(ВтРезультат.Значение13) КАК Значение13,
    МАКСИМУМ(ВтРезультат.Свойство14) КАК Свойство14,
    МАКСИМУМ(ВтРезультат.Значение14) КАК Значение14,
    МАКСИМУМ(ВтРезультат.Свойство15) КАК Свойство15,
    МАКСИМУМ(ВтРезультат.Значение15) КАК Значение15,
    МАКСИМУМ(ВтРезультат.Свойство16) КАК Свойство16,
    МАКСИМУМ(ВтРезультат.Значение16) КАК Значение16,
    МАКСИМУМ(ВтРезультат.Свойство17) КАК Свойство17,
    МАКСИМУМ(ВтРезультат.Значение17) КАК Значение17,
    МАКСИМУМ(ВтРезультат.Свойство18) КАК Свойство18,
    МАКСИМУМ(ВтРезультат.Значение18) КАК Значение18,
    МАКСИМУМ(ВтРезультат.Свойство19) КАК Свойство19,
    МАКСИМУМ(ВтРезультат.Значение19) КАК Значение19,
    МАКСИМУМ(ВтРезультат.Свойство20) КАК Свойство20,
    МАКСИМУМ(ВтРезультат.Значение20) КАК Значение20
    ИЗ
    ВтРезультат КАК ВтРезультат

    СГРУППИРОВАТЬ ПО
    ВтРезультат.Ссылка
```

Если с 1 сотрудником все вроде бы неплохо, то по всем сотрудникам (около 2 тысяч) задумалось на очень продолжительное время, плюс у него есть недостаток - прописывать нумерацию свойств/значений по сути нужно вручную.

Если кто-то решал подобную задачу, поделитесь решением!
---
```1c
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ДопРеквизиты
    |ИЗ
    | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
    |ГДЕ
    | ДополнительныеРеквизитыИСведения.НаборСвойств ССЫЛКА Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Сотрудники");

    Выборка = Запрос.Выполнить().Выбрать();
    ИндексСвойства = 0;
    Запрос.Текст = "ВЫБРАТЬ " + Символы.ПС + "Сотрудники.Ссылка," + Символы.ПС;
    Соединение = "ИЗ
    | Справочник.Сотрудники КАК Сотрудники" + Символы.ПС;
    Пока Выборка.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + ?(ИндексСвойства,"," + Символы.ПС ,") + "ЕСТЬNULL(ДопРеквизиты" + ИндексСвойства + ".Значение,"") КАК " + Выборка.Ссылка.Метаданные().Имя;
    Соединение = Соединение + Символы.ПС + " ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники.ДополнительныеРеквизиты КАК ДопРеквизиты" + ИндексСвойства
    | ПО Сотрудники.Ссылка= ДопРеквизиты" + ИндексСвойства + ".Ссылка
    | И ДопРеквизиты" + ИндексСвойства + ".Свойство = &Свойство" + ИндексСвойства;
    Запрос.УстановитьПараметр( "Свойство" + ИндексСвойства,Выборка.Ссылка);
    КонецЦикла
    Запрос.Текст = Запрос.Текст + Соединение;
    Результат = Запрос.Выполнить().Выгрузить();
```
---
А зачем собственно в запросе? В коде можно и так перебрать. В СКД таких плясок не надо, там таблицей можно вывести.
---
если это реквизит
то

```1c
    "ВЫБРАТЬ
    | СотрудникиДополнительныеРеквизиты.Ссылка КАК Ссылка,
    | СотрудникиДополнительныеРеквизиты.НомерСтроки КАК НомерСтроки,
    | СотрудникиДополнительныеРеквизиты.Свойство КАК Свойство,
    | СотрудникиДополнительныеРеквизиты.Значение КАК Значение,
    | СотрудникиДополнительныеРеквизиты.ТекстоваяСтрока КАК ТекстоваяСтрока
    |ИЗ
    | Справочник.Сотрудники.ДополнительныеРеквизиты КАК СотрудникиДополнительныеРеквизиты"
```

если это допсведения
то

```1c
    "ВЫБРАТЬ
    | Сотрудники.Ссылка КАК Ссылка,
    | ДополнительныеСведения.Свойство КАК Свойство,
    | ДополнительныеСведения.Значение КАК Значение
    |ИЗ
    | Справочник.Сотрудники КАК Сотрудники
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
    | ПО (Сотрудники.Ссылка = ДополнительныеСведения.Объект)"
```
---
и с итоге 20 строчек одного и того же сотрудника? Если бы все так просто... Суть именно в том, что строка сотрудника должна быть одна, и в столбцах таблицы должны быть все значения дополнительных реквизитов.
---
как вариант - сначала получать таблицу всех различных допреквизитов, вне запроса её транспонировать и передавать следующему запросу который будет заполнять нужные колонки
---
хотя нет, не получится. при заполнении колонок нужно будет прописывать какой-то отбор, а это опять ручками, а хочется автоматом все получить
---
А как это сделано в типовых БСП динамический список с реквизитом элемента справочника в виде колонки?
---
туманно там все очень :)
---
```1c
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ДопРеквизиты
    |ИЗ
    | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
    |ГДЕ
    | ДополнительныеРеквизитыИСведения.НаборСвойств ССЫЛКА Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Сотрудники");

    Выборка = Запрос.Выполнить().Выбрать();
    ИндексСвойства = 0;
    Запрос.Текст = "ВЫБРАТЬ " + Символы.ПС + "Сотрудники.Ссылка," + Символы.ПС;
    Соединение = "ИЗ
    | Справочник.Сотрудники КАК Сотрудники" + Символы.ПС;
    Пока Выборка.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + ?(ИндексСвойства,"," + Символы.ПС ,") + "ЕСТЬNULL(ДопРеквизиты" + ИндексСвойства + ".Значение,"") КАК " + Выборка.Ссылка.Метаданные().Имя;
    Соединение = Соединение + Символы.ПС + " ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники.ДополнительныеРеквизиты КАК ДопРеквизиты" + ИндексСвойства
    | ПО Сотрудники.Ссылка= ДопРеквизиты" + ИндексСвойства + ".Ссылка
    | И ДопРеквизиты" + ИндексСвойства + ".Свойство = &Свойство" + ИндексСвойства;
    Запрос.УстановитьПараметр( "Свойство" + ИндексСвойства,Выборка.Ссылка);
    КонецЦикла
    Запрос.Текст = Запрос.Текст + Соединение;
    Результат = Запрос.Выполнить().Выгрузить();
```
---
спасибо! То, что надо! :)