Добрый день!

Rонфигурация 1С: УНФ.
В справочник "Проекты" добавлен дополнительный реквизит "Ответственный" (тип Справочник.Сотрудники).

В самом простом варианте задача выглядит так:
Получить список всех проектов, у которых ответственный — Иванов Иван Иванович. Задача решена, но неоптимальным способом, чего недостаточно для прохождения аудита в системе 1С: Фреш. Вся суть в том, что происходит обращение через точку к полю составного ссылочного типа.

Как сделано:

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

Комментарий не пройденного аудита во Фреше:
1. Расширение не должно приводить к чрезмерной нагрузке на компоненты сервиса или клиентское приложение.
Если в запросе используется получение значения через точку от поля составного ссылочного типа, то при выполнении этого запроса будет выполняться соединение со всеми таблицами объектов, входящими в этот составной тип. В результате SQL текст запроса чрезвычайно усложняется, и при его выполнении оптимизатор СУБД может выбрать неоптимальный план. Это может привести к серьезным проблемам производительности и даже к неработоспособности запроса в отдельных случаях.
(например, "ПроектыДополнительныеРеквизиты.Значение.Наименование") и т. п. При этом не важно, в какой части запроса вы используете реквизит, полученный через точку от поля составного типа, - в списке возвращаемых полей, в условии и т. п. Во всех случаях такое обращение может привести к проблемам производительности.
Подробнее с причинами неоптимальной работы запросов и их оптимизацией можно ознакомиться здесь https://its.1c.ru/db/v8std#browse:13:-1:26:28

Пытался так, не получилось:

```1c
    ПроектыДополнительныеРеквизиты.Значение = &Сотрудник
```

где &Сотрудник — ссылка на объект Справочник.Сотрудники.

Как можно разрешить эту проблему? Возможно, есть способ параметром указать Характеристику (тип данных "Характеристика" не указывается в запросе). То есть это не работает:

```1c
    ВЫРАЗИТЬ(ПроектыДополнительныеРеквизиты.ЗначениеКАК <<?>> Характеристика.ДополнительныеРеквизитыИСведения).Наименование = "Ответственный (Проекты)"
```
---
И ПроектыДополнительныеРеквизиты.Значение.Наименование = "Иванов Иван Иванович"

Замените на:

```1c
    И ВЫРАЗИТЬ(ПроектыДополнительныеРеквизиты.Значение КАК Справочник.Сотрудники).Наименование = "Иванов Иван Иванович"
```
---
ПроектыДополнительныеРеквизиты.Значение = &Сотрудник Это правильный вариант. Как параметр Сотрудник получаете?
Можно, конечно, сделать
```1c
    ВЫРАЗИТЬ(ПроектыДополнительныеРеквизиты.Значение КАК Справочник.Сотрудники).Наименование = "Иванов Иван Иванович"
```
 но это плохой вариант из-за хардкодинга.
Оператор ВЫРАЗИТЬ перед ПроектыДополнительныеРеквизиты.Свойство не нужен, так как это реквизит не составного типа.
---
И ПроектыДополнительныеРеквизиты.Значение.Наименование = "Иванов Иван Иванович"

Замените на:

```1c
    И ВЫРАЗИТЬ(ПроектыДополнительныеРеквизиты.Значение КАК Справочник.Сотрудники).Наименование = "Иванов Иван Иванович"
```
---
ПроектыДополнительныеРеквизиты.Значение = &Сотрудник Это правильный вариант. Как параметр Сотрудник получаете?
Можно, конечно, сделать
```1c
    ВЫРАЗИТЬ(ПроектыДополнительныеРеквизиты.Значение КАК Справочник.Сотрудники).Наименование = "Иванов Иван Иванович"
```
 но это плохой вариант из-за хардкодинга.
Оператор ВЫРАЗИТЬ перед ПроектыДополнительныеРеквизиты.Свойство не нужен, так как это реквизит не составного типа.
---
но это плохой вариант из-за хардкодинга

Имхо, если запрос должен возвращать значения строго одного типа, то хардкодинг - правильный вариант.

Если запрос должен возвращать данные по разным типам, то да - это плохой вариант.
---
Под хардкодингом я имел в виду отбор по наименованию "Иванов Иван Иванович". По-хорошему, решение должно опираться на параметры, которые можно изменить в предприятии.
---
Согласен.
---
Передайте в запрос искомое свойство параметром.
---
Спасибо, что натолкнули на мысль. Оказывается, там привязка не к справочнику "Сотрудники", а к пользователям системы. Спасибо.

Способ сработал:

```1c
    ПроектыДополнительныеРеквизиты.Значение = &Сотрудник
```