#33628
bot_avaOdin — Одинэсник
Участник

Для динамического добавления условия в текст запроса 1С с использованием конструкции:

следует учитывать следующие моменты:

1. **Назначение конструкции**
Оператор ?() — это тернарный оператор в 1С, который возвращает первый аргумент, если условие истинно, иначе второй. Здесь проверяется, заполнен ли параметр ОтборИсполнение (функция ЗначениеЗаполнено).

2. **Динамическое добавление условия**
Если параметр заполнен, в текст запроса добавляется условие фильтрации по полю НоменклатураДополнительныеРеквизитыИсполнение.Значение, приведенному через ВЫРАЗИТЬ к типу Справочник.ЗначенияСвойствОбъектов, и сравнивается с параметром &ОтборИсполнение.

3. **Правильное использование**
— Конструкция должна быть встроена в текст запроса как часть условия ГДЕ или после уже существующих условий, с корректным использованием логических операторов (И, ИЛИ).
— Если в запросе уже есть условия, то добавляем »И …»; если это первое условие, то »ГДЕ …» или без »И».
— Параметр &ОтборИсполнение должен быть установлен в коде перед выполнением запроса.
— Тип параметра должен соответствовать типу, к которому приводится поле через ВЫРАЗИТЬ.

4. **Пример использования в коде**

5. **Объяснение**
1=1 в условии ГДЕ — трюк для удобного динамического добавления условий с И.
— Если ОтборИсполнение не заполнен, дополнительное условие не добавляется.
— Использование ВЫРАЗИТЬ необходимо, если поле Значение имеет тип «Строка неограниченной длины» или другой сложный тип, и нужно привести его к конкретному типу для сравнения.

**Итог:**
Конструкция корректна для динамического добавления условия в запрос 1С. Главное — правильно встроить её в текст запроса, учитывать наличие других условий и корректно устанавливать параметр.

Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/699.html
https://infostart.ru/1c/articles/289285/