Добрый день! Как правильно задать условие в запросе отчета, чтобы выводилось то что нужно (функция ВЫБОР)?

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

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

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

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

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

```1c
    КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.<НужныйПлан>.<НужныйВидРасчета>)
```

и не морочьте голову с передачей параметров в запрос и поиском по наименованию нужного вида расчета.
---
ОсновныеНачисленияДанныеГрафика.ВидРасчета = "Отпуск"
А разве тип значения у ОсновныеНачисленияДанныеГрафика.ВидРасчета Строка?
---
Наверное, нет. Только учусь. Пока не до конца понимаю. Как тогда сделать правильно?
---
У Вас 2 варианта:
1. ОсновныеНачисленияДанныеГрафика.ВидРасчета.Наименование = "Отпуск" - Плохой вариант.
2. ОсновныеНачисленияДанныеГрафика.ВидРасчета = &Отпуск - в параметрах запроса передайте необходимое значение.
---
1. вполне себе хороший вариант, в том случае, когда вид расчета не выбран на форме.
2. вполне себе плохой вариант, в случае, когда вид расчета не выбран на форме.
---
Предложенный мною первый вариант считаю плохим по двум причинам:
- добавляется лишнее соединение, так как идет дальнейшее обращение к реквизиту через точку;
- Сравнивать Строку вместо ссылки работает куда медленнее;
- ВидРасчета могут переименовать например в "Основной отпуск" и тогда очет опять начнет работать не правильно.
---
1.в лишнем соединение нет ничего плохого, если оно оправдано. По крайней мере оно лучше отдельного запроса в виде ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Отпуск")
2. нет, если значения индексированы
3. в таком случае, вид расчета необходимо выводить на форму для выполнения выбора пользователем.
---
А параметр вот так передать ВидРасчета=&Отпуск?
---
Нужно предавать в параметр тот же тип данных, т.е. ВидРасчета.
Скорее всего Запрос.Установитьпараметр("Отпуск", ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Отпуск")) - (могу ошибиться в синтаксисе, так как нет нужной конфигурации под рукой).
А получить Ссылку на ВидРасчета имеет множество вариантов:
ПланыВидовРасчета.Начисления.НайтиПоНаименованию
ПланыВидовРасчета.Начисления.НайтиПоКоду
ПланыВидовРасчета.Начисления.ПолучитьСсылку
и.т.д.
---
Первый вариант работает. Второй пока нет, если вот так передать параметр а парметрах виртуальной таблицы
---
```1c
    |КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета = &ВидРасчета
    .....

    Запрос.УстановитьПараметр("ВидРасчета", ....);
```
---
Если вид расчета уникальный по наименованию и коду элемента, то используйте первый вариант.
Если вид расчета указывается на форме, то используйте 2-ой вариант
---
это отчет. Передаем значение в параметрах. Что написать в колонке "Выражение"?
---
Это запрос в отчете
---
не важно где работает запрос, важно понимать, как вы будете определять нужный(-е) вам вид(-ы) расчета.
Хороший вариант с предопределенным значением, но если оно не предопределено, то назвать его могут как угодно и отчет перестанет работать(будет пустым) в другой базе(читай в других условиях выполнения).
---
значение предопредленно
---
в таком случае сделайте условие

```1c
    КОГДА ОсновныеНачисленияДанныеГрафика.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.<НужныйПлан>.<НужныйВидРасчета>)
```

и не морочьте голову с передачей параметров в запрос и поиском по наименованию нужного вида расчета.
---
Большая благодарность Всем!