Имя: Пароль:
1C
1С v8
Параметры запроса
0 CyberDream
 
08.12.11
17:11
Есть условие в запросе вида:

|ГДЕ
|    Номенклатура В(&ВыбНоменклатура)

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

Теперь вопрос, возможно ли сделать так, чтобы при пустом списке выбирались все возможные варианты.

Удалять условие из текста запроса при пустом списке не предлагать.
1 rrunover
 
08.12.11
17:12
(0) >>Удалять условие из текста запроса при пустом списке не предлагать.
А почему?
2 mirosh
 
08.12.11
17:14
Вместо

|ГДЕ
|    Номенклатура В(&ВыбНоменклатура)

пишем

"+УсловиеДляНоменклатуры.

Предварительно записываем.
Если ЗначениеЗаполнено(ВыбНоменклатура) Тогда // не выбрал значения
УсловиеДляНоменклатуры  ="";
Иначе
УсловиеДляНоменклатуры  = "
|ГДЕ
|    Номенклатура В(&ВыбНоменклатура)";
КонецЕсли;
3 CyberDream
 
08.12.11
17:14
(1) потому что, интересует другой вариант, если кто-то знает.
4 mirosh
 
08.12.11
17:14
(2) там вместо точки ";", конечно же.
5 CyberDream
 
08.12.11
17:14
(2) это сейчас так работает
6 mirosh
 
08.12.11
17:15
(2) вернее *не значение заполнено
7 CyberDream
 
08.12.11
17:15
а хочется, (нечаянно вспомнил 7-ный вариант), не менять текст запроса.
8 PVV65
 
08.12.11
17:16
(7) используй СКД (там это реализовано).
9 mirosh
 
08.12.11
17:16
(5) тогда это будет извращение с несколькими запросами в пакете, не надо оно тебе
10 Жан Пердежон
 
08.12.11
17:17
(7) открой для себя построитель запроса (отчета)
11 Жан Пердежон
 
08.12.11
17:18
за 3 года давно пора
12 YF
 
08.12.11
17:19
{ГДЕ
   Номенклатура В(&ВыбНоменклатура)
}
13 tvitals
 
08.12.11
17:23
На вскидку, но думаю можно и лучше

|ГДЕ
|    Номенклатура В(&ВыбНоменклатура)
|ИЛИ
|   НЕ Истина В
|   (ВЫБРАТЬ
|       Истина
|    ИЗ
|      Справочник.Номенклтура КАК Номенклтура
|    ГДЕ
|       Номенклатура В(&ВыбНоменклатура)
|   )
14 tvitals
 
08.12.11
17:24
Истина наверное лучше заменить на 1
15 Ненавижу 1С
 
гуру
08.12.11
17:26
(13) бред
16 Arseny
 
08.12.11
17:27
А почему в иерархии не использовать? тогда как раз и будет, если пустое значение то все
17 mirosh
 
08.12.11
17:29
(16) серьезно?
18 Arseny
 
08.12.11
17:31
(17) Это сарказм?
19 Ненавижу 1С
 
гуру
08.12.11
17:32
(16) не будет
20 mirosh
 
08.12.11
17:33
(18) нет, не сарказм, я просто не знал о такой фишки выражения В ИЕРАРХИИ и считаю, что это не поможет
21 Arseny
 
08.12.11
17:34
(19) Что же я делаю не так? Почему у меня это работает?
22 YAGolova
 
08.12.11
17:35
Номенклатура В(&ВыбНоменклатура) или &ПоВсем

Запрос.Установитьпараметр("ПоВсем", СпискоНоменклатуры.Количество() = 0)

я всегда так делаю
23 Ненавижу 1С
 
гуру
08.12.11
17:35
(21) пустой список там не прокатит, вот пустая ссылка или список, содержащий пустую ссылку - да
24 Arseny
 
08.12.11
17:36
Сейчас проверил в консоли запросов:
ВЫБРАТЬ
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка В иерархии (&Ссылка)
если передаю в ссылку пустую ссылку, то возвращает весь справочник
25 Ненавижу 1С
 
гуру
08.12.11
17:37
(24) но там передается список, короче см (23)
26 Arseny
 
08.12.11
17:38
(23) точно,  ну тогда можно просто передавать в качестве параметра или копию списка или если список пустой в копию добавлять значение с пустой ссылкой
27 tvitals
 
08.12.11
18:15
(15) В чем бред? Реализвация дурацкая, но работать точно будет!
28 Ненавижу 1С
 
гуру
08.12.11
22:53
(27) работать не будет, по-моему
29 tvitals
 
09.12.11
13:25
(28) Попробуй...
30 Ненавижу 1С
 
гуру
09.12.11
13:26
(29) ну смоитри, что будет если номенклатура не в списке, тогда?
31 tvitals
 
09.12.11
13:29
Принцип следующий:

Если есть хоть одна номенклатура но подзапрос не будет пустой, и будет содержать в себе несколько строк с начением 1.
Далее проверяем, что НЕ 1 В (Получившийся список).
В итоге когда списко пустой, значение НЕ 1 В(...) будет давать истина, и выбрана будет вся номенклатура.