Имя: Пароль:
1C
1С v8
Проверка на пустой СписокЗначений в запросе
0 Nikosss
 
07.03.13
13:04
Никак не могу найти простого решения для проверки в запросе на пустой СписокЗначений

"ВЫБРАТЬ
|    РеализацияТоваровУслуг.Ссылка
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
|    РеализацияТоваровУслуг.Контрагент В(&Контрагент)"

Как вы проверяете без разрыва текста запроса??
1 butterbean
 
07.03.13
13:06
передавай параметром
2 ale-sarin
 
07.03.13
13:08
(0) Может так?
ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО Контрагенты.Ссылка = РеализацияТоваровУслуг.Контрагент
ГДЕ
   Контрагенты.Ссылка В(&Контрагенты)

Если список пустой, то и результат будет пустой.
3 PR
 
07.03.13
13:08
ИЛИ &КонтрагентПустой
4 Nikosss
 
07.03.13
13:09
(1) &Контрагент - СписокЗначений на форме, который указывается пользователем. Вот как вывести реализации по всем контрагентам, если пользователь не указал ни одного?
5 ale-sarin
 
07.03.13
13:09
+2 Или я ни хрена не понял?
6 Reset
 
07.03.13
13:09
(4) см (1)(3)
7 ale-sarin
 
07.03.13
13:09
(4) Тогда (3).
8 Kvestin
 
07.03.13
13:09
Я бы дополнил условие запроса "... ИЛИ (&ПустойСписок)" И передавал бы параметр исходя из проверки на пустоту в коде.

Где возможно использую именно такой подход, т.к. запрос при этом можно открыть в конструкторе.
9 Nikosss
 
07.03.13
13:10
(2) Возможно прокатит, надо попробовать!
10 Kvestin
 
07.03.13
13:10
Опередили ;)
11 Reset
 
07.03.13
13:10
(5) стопудово
12 Fragster
 
гуру
07.03.13
13:11
юзать построитель или СКД
13 PR
 
07.03.13
13:11
Все, посоны, сворачиваемся, чукча не читатель
14 ale-sarin
 
07.03.13
13:11
(9) Судя по (4), (2) не прокатит.
15 Fragster
 
гуру
07.03.13
13:12
или

Запрос.Текст = СтрЗаменить(Текст, "&Условие", ?(ЗначениеЗаполнено(Контрагенты),  Контрагенты.Ссылка В(&Контрагенты), Истина)
16 Fragster
 
гуру
07.03.13
13:12
потому как эти ваши ИЛИ тормозят сильно
17 Nikosss
 
07.03.13
13:13
(8) Возможно и это сработает, если передавать в &ПустойСписок СписокЗначений.Количество()>0, а там через ВЫБОР
18 Kvestin
 
07.03.13
13:13
(16) Мне кажется, что если ставить "&КонтрагентПустой ИЛИ " тормозить ничего не будет.
19 ale-sarin
 
07.03.13
13:15
(15) А разве ЗначениеЗаполнено(Пустойсписок) = Ложь?
Честно,не пробовал. Но поверю при подтверждении.
20 Nikosss
 
07.03.13
13:15
Всем спасибо за помощь!! буду пробовать
21 Nikosss
 
07.03.13
13:16
ЗначениеЗаполнено(Пустойсписок) = Ложь
Уже испробовано)) нет такого для конструктора запроса
22 Reset
 
07.03.13
13:17
(19) Цитата:
"Для массивов и коллекций возвращается Истина, если в них есть хотя бы 1 элемент"
23 ale-sarin
 
07.03.13
13:18
(21) (22) Ладно-ладно. Теперь и сам проверил. Лопух.
24 mikecool
 
07.03.13
13:18
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Контрагент В(&Контрагент)
Или 0 В (Выбрать Количество(Ссылка) Из Справочник.Контрагенты
где ссылка в (&Контрагент))
25 Nikosss
 
07.03.13
13:23
(23) не в лопухе дело)) в голову лезли и мысли
Где &Контрагенты.Количество()>0 , но методы недоступны (
26 Nikosss
 
07.03.13
13:32
(8) Впринципе такое условие вполне устроило, все отлично работает!
ВЫБОР
   КОГДА &ПустыеКонтрагенты
       ТОГДА ИСТИНА
   ИНАЧЕ РеализацияТоваровУслуг.Контрагент В (&Контрагенты)
КОНЕЦ

Запрос.УстановитьПараметр("ПустыеКонтрагенты",Контрагенты.Количество()=0);
27 butterbean
 
07.03.13
13:33
(26) так попроще: &ПустыеКонтрагенты ИЛИ РеализацияТоваровУслуг.Контрагент В (&Контрагенты)
28 t731
 
08.03.13
11:56
|ВЫБРАТЬ
|    РеализацияТоваровУслуг.Ссылка
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
|    РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)

Тогда если параметр пустой, получим все документы...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс