Количество элементов массива в запросе

1. x2z7yy 05.03.16 13:37 Сейчас в теме
Собственно, как проверить пустой ли массив передается в переменной (в запрос)?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1556 05.03.16 14:04 Сейчас в теме
(1) x2z7yy,
Если Массив.количество() > 0 Тогда
Сообщить("Массив не пустой");
Иначе
Сообщить("Массив пустой");
КонецЕсли;
2. spe1c 5 05.03.16 13:53 Сейчас в теме
x2z7yy, либо Массив.количество() либо ЗначениеЗаполнено(Массив)
4. x2z7yy 05.03.16 14:08 Сейчас в теме
Видимо не увидели ключевое слово "ЗАПРОС"...
5. Xershi 1556 05.03.16 14:11 Сейчас в теме
(4) x2z7yy, переменную вы кодом задаете? Вот и запрос кодом перепишите.
7. tusv 212 05.03.16 14:15 Сейчас в теме
(4) x2z7yy,
Видимо не увидели ключевое слово "ЗАПРОС"...

Просто передай Количество в массиве в параметр и пройдись выбором
Выбор когда &КоличиствоВМассиве=0 Тогда
   Истина
Иначе
   Номенклатура в (&Массив)
Конец
irinar03; dj_serega; +2 Ответить
6. spe1c 5 05.03.16 14:14 Сейчас в теме
Зачем может быть нужно проверять массив на пустоту в самом запросе? Это может привести к тому что план запроса будет неоптимальный.
8. json 3355 07.03.16 11:28 Сейчас в теме
Еще есть такой вариант:
если в массиве ссылки, то можно сначала заполнить вспомогательную временную таблицу с фильтром по массиву
ВЫБРАТЬ спр.Ссылка
ПОМЕСТИТЬ вт
ИЗ Справочник.Склады как спр
ГДЕ спр.Ссылка в (&Массив)

а дальше в запросе работать с этой временной таблицей
9. VadimTer 27.11.21 08:24 Сейчас в теме
Допустим, что мы имеем список значений справочника "Контрагенты", который участвует в отборе динамического списка. Запрос в настройках формирования динамического списка может выглядеть следующим образом:

ВЫБРАТЬ
	ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка	
ИЗ
	Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
ГДЕ
	ВЫБОР
			КОГДА &КоличествоСтрокСЗКонтрагентов = 0
				ТОГДА ИСТИНА
			ИНАЧЕ ДокументРеализацияТоваровУслуг.Контрагент В (&КонтрагентРеализации)
		КОНЕЦ
Показать

Параметры задаем в процедуре:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	 	 	
	СКД = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СКД,УникальныйИдентификатор);
	ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище);
	Отчет.КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
	Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
		
	КоличествоСтрокСЗКонтрагентов = КонтрагентРеализации.Количество(); 

ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоСтрокСЗКонтрагентов",КоличествоСтрокСЗКонтрагентов);

	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонтрагентРеализации",КонтрагентРеализации);

КонецПроцедуры
Показать

Согласно данному коду, если мы заполняем список значений контрагентами, то динамический список заполняется документами реализации по выбранным нами контрагентам. Если же мы очищаем список значений, то количество строк в списке значений у нас становится равным нулю и, по условию, динамический список у нас будет заполнятся документами реализации по всем контрагентам, имеющимся в базе
Оставьте свое сообщение

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