Здравствуйте, пытаюсь сделать небольшой отчет, но наткнулся на небольшую проблему, в отчете нужны данные которые в программе отражаются через доп.реквизит, причем нужен только 1 из 3. Как к нему обратиться через СКД?
---
страшный запрос )
Я бы переделал его так:
1) КадроваяИсторияСотрудников - основная таблица
2) "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники" - вообще не нужна, пол можно и из КадроваяИсторияСотрудников получить.
3) все эти внутренние переделать на левые (при условии, что КадроваяИсторияСотрудников главная)
4) ивс_СведенияОПенсиях.ВидПенсии.Ссылка - переделать на ивс_СведенияОПенсиях.ВидПенсии (т.к. оно и так ссылка, а для сервера БД есть разница между этими двумя записями)
5) ну и по аналогии добавить

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

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

Если добавляю отдельно или прямо в текст:

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

То выдает ошибку, естественно названия справочника меняю на свой.
---
А где собственно таблица "Сотрудники" откуда берётся Наименование?
Без полного текста запроса не разобраться. Не понятно где основная таблица, а какие к ней соединяются. Ну и внутренее на левое надо будет поменять
---
Вы имеете ввиду табличную часть дополнительные реквизиты?
---
по соединению - да. И текст запроса весь увидеть бы
---
Вот, но это уже рабочая база:

```1c
    ВЫБРАТЬ
    Сотрудники.ФизическоеЛицо.Пол КАК ФизическоеЛицоПол,
    СведенияКонтрактаДоговораСотрудника.СрочныйДоговор КАК СрочныйДоговор,
    КадроваяИсторияСотрудников.Подразделение КАК Подразделение,
    ВидыЗанятостиСотрудниковСрезПоследних.ВидЗанятости КАК ВидЗанятости,
    ивс_СведенияОПенсиях.ВидПенсии.Ссылка КАК ВидПенсииСсылка,
    КадроваяИсторияСотрудников.Должность КАК Должность,
    КадроваяИсторияСотрудников.Сотрудник КАК Сотрудник
    ИЗ
    РегистрСведений.СведенияКонтрактаДоговораСотрудника КАК СведенияКонтрактаДоговораСотрудника
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
    ПО (КадроваяИсторияСотрудников.Сотрудник = Сотрудники.Ссылка)
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудников.СрезПоследних КАК ВидыЗанятостиСотрудниковСрезПоследних
    ПО (ВидыЗанятостиСотрудниковСрезПоследних.Сотрудник = Сотрудники.Ссылка)
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ивс_СведенияОПенсиях КАК ивс_СведенияОПенсиях
    ПО (Сотрудники.ФизическоеЛицо.Ссылка = Сотрудники.ФизическоеЛицо.Ссылка)
    ПО СведенияКонтрактаДоговораСотрудника.Сотрудник = Сотрудники.Ссылка
    ГДЕ
    КадроваяИсторияСотрудников.Период МЕЖДУ &НачалоПериода И &КонецПериода
    И КадроваяИсторияСотрудников.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Прием)
```
---
страшный запрос )
Я бы переделал его так:
1) КадроваяИсторияСотрудников - основная таблица
2) "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники" - вообще не нужна, пол можно и из КадроваяИсторияСотрудников получить.
3) все эти внутренние переделать на левые (при условии, что КадроваяИсторияСотрудников главная)
4) ивс_СведенияОПенсиях.ВидПенсии.Ссылка - переделать на ивс_СведенияОПенсиях.ВидПенсии (т.к. оно и так ссылка, а для сервера БД есть разница между этими двумя записями)
5) ну и по аналогии добавить

```1c
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Сотрудники.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
    ПО КадроваяИсторияСотрудников.Сотрудник = ДополнительныеРеквизиты.Ссылка и ДополнительныеРеквизиты.Свойство = &нужноесвойство
```
---
Спасибо, кажется понял как, сейчас проверю)
---
Есть у Гилева неплохой бесплатный интенсив по СКД, рекомендую посмотреть. Плюс есть книга Хрусталевой "Разработка сложных отчетов". Программировать наугад тоже конечно можно, если время не жалко.