Условие в запросе динамического списка

1. _Vanda_ 15.03.19 15:34 Сейчас в теме
Подскажите пожалуйста, есть такое условие в запросе
ГДЕ
	НЕ ЗадачаЗадачаИсполнителя.ТекущийИсполнитель = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
{ГДЕ
	(ЗадачаЗадачаИсполнителя.Ссылка В (&МассивСсылок)),
	(ИСТИНА В
				(ВЫБРАТЬ ПЕРВЫЕ 1
					ИСТИНА
				ИЗ
					РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
				ГДЕ
					ИсполнителиРолейИДелегаты.РольПользователь = ЗадачаЗадачаИсполнителя.ТекущийИсполнитель
					И ИсполнителиРолейИДелегаты.ИсполнительДелегат В (&Исполнитель)
					И ИсполнителиРолейИДелегаты.ИмяОбластиДелегирования В ("", "ПроцессыИЗадачи"))
			ИЛИ ИСТИНА В
					(ВЫБРАТЬ ПЕРВЫЕ 1
						ИСТИНА
					ИЗ
						Справочник.ПолныеРоли КАК ИсполнителиРолей
					ГДЕ
						ИсполнителиРолей.Ссылка = ЗадачаЗадачаИсполнителя.РольИсполнителя
						И ИсполнителиРолей.Ссылка В (&РольИсполнителя))
		}
Показать

надо чтобы оно выполнялось только при определенном условии, т.е. когда указана и Роль и Пользователь. Делаю так:
ГДЕ
	НЕ ЗадачаЗадачаИсполнителя.ТекущийИсполнитель = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
{ГДЕ
	(ЗадачаЗадачаИсполнителя.Ссылка В (&МассивСсылок)),
	(ВЫБОР
			КОГДА &УстановленОтборПоРолиИПользователю
				ТОГДА ИСТИНА В
							(ВЫБРАТЬ ПЕРВЫЕ 1
								ИСТИНА
							ИЗ
								РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
							ГДЕ
								ИсполнителиРолейИДелегаты.РольПользователь = ЗадачаЗадачаИсполнителя.ТекущийИсполнитель
								И ИсполнителиРолейИДелегаты.ИсполнительДелегат В (&Исполнитель)
								И ИсполнителиРолейИДелегаты.ИмяОбластиДелегирования В ("", "ПроцессыИЗадачи"))
						ИЛИ ИСТИНА В
							(ВЫБРАТЬ ПЕРВЫЕ 1
								ИСТИНА
							ИЗ
								Справочник.ПолныеРоли КАК ИсполнителиРолей
							ГДЕ
								ИсполнителиРолей.Ссылка = ЗадачаЗадачаИсполнителя.РольИсполнителя
								И ИсполнителиРолей.Ссылка В (&РольИсполнителя))
			ИНАЧЕ ЛОЖЬ
		КОНЕЦ)}
Показать

выдает ошибку, что параметр Исполнитель не указан, когда указываю роль(массив ролей), без пользователей.
Т.е. когда УстановленОтборПоРолиИПользователю = Ложь, он все равно просит заполнить параметр Исполнитель.

Параметры устанавливаю так:
 Если МассивРолей.Количество() > 0  И МассивПользователей.Количество() > 0 Тогда
				Список.Параметры.УстановитьЗначениеПараметра("УстановленОтборПоРолиИПользователю", Истина);
				Список.Параметры.УстановитьЗначениеПараметра("РольИсполнителя", МассивРолей);
				Список.Параметры.УстановитьЗначениеПараметра("Исполнитель", МассивПользователей);
			ИначеЕсли МассивРолей.Количество() > 0 Тогда
				Список.Параметры.УстановитьЗначениеПараметра("УстановленОтборПоРолиИПользователю", Ложь);
				ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "РольИсполнителя", МассивРолей); 
			ИначеЕсли МассивПользователей.Количество()> 0 Тогда
				Список.Параметры.УстановитьЗначениеПараметра("УстановленОтборПоРолиИПользователю", Ложь);
				ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Исполнитель", МассивПользователей); 
			КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zarankony 312 15.03.19 17:04 Сейчас в теме
ну установите пустые массивы в параметры, дайте программе то что она хочет)
3. Дмитрий74Чел 240 18.03.19 09:56 Сейчас в теме
Исполняться-то ветка запроса (условие) не будет. Но вот т.к. в тексте запроса параметр упоминается - платформа требует чтобы параметр был задан (любой, хоть строка "привет"). Платформа ведь не выполняет запрос, не анализирует его текст перед выполнением на логику выполнения (в целях проверки заполнения параметров).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот