Имя: Пароль:
1C
1С v8
Условие в запросе если передаём пустую ссылку
,
0 Zend
 
27.02.13
11:28
Хочу написать в запросе условие, если пользователь выберет Организцию, то отбор по ней, если нет, то что бы все выводил.
Раньше вроде что то типа было Организация В ИЕРАРХИИ(&Организация)
а под &Организация передаём Справочники.Организация.ПустаяСсылка()
А сейчас что то не получается, вообще ничего не выводит.
1 Галахад
 
гуру
27.02.13
11:30
Организация В ИЕРАРХИИ(&Организация) или &ОрганизацияПуста
2 Sammo
 
27.02.13
11:30
&Организация = Значение(Справочник.Организация.ПустаяСсылка) или Организация В ИЕРАРХИИ(&Организация)
3 Alexaha
 
27.02.13
11:30
Организация = &Организация или &Организация = Значение(Справочник.Организации.ПустаяСсылка)
4 Maxus43
 
27.02.13
11:30
ГДЕ Организация В ИЕРАРХИИ(&Организация)
ИЛИ Организация = Значение(Справочник.Организации.ПустаяСсылка)
5 Defender aka LINN
 
27.02.13
11:32
(0) Еще один любитель делать отбор через жо... параметры?
6 Мыш
 
27.02.13
11:32
ГДЕ ВЫБОР КОГДА &Организация = Значение(Справочник.Организации.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ Организация В ИЕРАРХИИ(&Организация) КОНЕЦ
7 Maxus43
 
27.02.13
11:33
(6) жуть)
8 Тролль главный
 
27.02.13
11:34
&Организация В (Значение(Справочник.Организация.ПустаяСсылка),Организация)
9 Мыш
 
27.02.13
11:50
(7) Техасская резня бензопилой
10 H A D G E H O G s
 
27.02.13
11:55
Первый раз вижу иерархический справочник Организаций
11 H A D G E H O G s
 
27.02.13
11:55
(5) Я так делаю, нуаче?
12 H A D G E H O G s
 
27.02.13
11:55
(8) ППЦ, нетрадицуал! Ату его!
13 Defender aka LINN
 
27.02.13
11:56
(11) Извращенец!
14 Zend
 
27.02.13
12:04
(5) и как не через жо..?
15 H A D G E H O G s
 
27.02.13
12:07
(13) (14) Да! Как?!
16 Defender aka LINN
 
27.02.13
12:09
(14) Отбор
17 H A D G E H O G s
 
27.02.13
12:12
(16) Построитель штоле?
И что, везде его пихать?
18 Defender aka LINN
 
27.02.13
12:14
(17) Обижаешь. Построитель - прошлый век. Только СКД, только хардкор! :)
19 GANR
 
27.02.13
12:16
К слову, в СКД (построитель - не знаю) можно

{ГДЕ
Поле = &Параметр}

и конструкция отработает тогда и только тогда, когда параметр заполнен
20 notebug
 
27.02.13
12:21
ГДЕ
(НЕ &ЕстьОтборПоОрганизациям)
 ИЛИ Организация (&Организации)
21 GANR
 
27.02.13
12:21
Можно в запросе поставить
ТекстЗапроса =
"ВЫБРАТЬ
|...
ГДЕ
1 = 1
|...";

Если Не Организация.Пустая() Тогда
  ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "1 = 1", "Организация = &Организация")
конецЕсли
22 notebug
 
27.02.13
12:21
(20) ГДЕ
(НЕ &ЕстьОтборПоОрганизациям)
 ИЛИ Организация В(&Организации)
23 Полотенчик
 
27.02.13
12:36
(21)
ТекстЗапроса =
"ВЫБРАТЬ
...
ГДЕ &УсловиеОрганизация
..."

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеОрганизация", ?(ЗначениеЗаполнено(Организация), "Организация = &Организация", "ИСТИНА"));
24 Shurjk
 
27.02.13
12:38
(21) Никогда так больше не делай.
25 Shurjk
 
27.02.13
12:39
Проверяй если организация не пустая ссылка тогда отрабатывай условие.
26 Галахад
 
гуру
27.02.13
12:40
(24) Почему?
27 Shurjk
 
27.02.13
12:42
(26) Неоднозначный текст запроса, усложняется обслуживание и сопровождение да и просто выглядит некрасиво, у меня пердыдущий разработчик любил так делать я наматерился по полной от таких решений.
28 Полотенчик
 
27.02.13
12:45
(27) В (23) имхо самый наглядный текст запроса: без всяких склеек текста, текст запроса нормально открывается и сохраняется конструктором, по названию переменной сразу понятно чем она заменяется
29 Shurjk
 
27.02.13
12:46
(28) Ну предположим ушел ты и на твое место пришел другой спец, ему надо немного доработать твой запрос, он его копирует и в консоли запросов драбатывает и обкатывает, как он должен догадываться что это за параметр?
Про СКД и построитель я вообще молчу.
30 Shurjk
 
27.02.13
12:47
+(29) А вообще самого себя хвалить - это нескромно.
31 Полотенчик
 
27.02.13
12:53
(29) По названию переменной понятно что и при каких условиях там будет.
(30) Со временем перешел от склейки текста запроса до удобоваримых параметров. Как в Книга знаний: Хитрое написание текстов запросов с необязательными условиями
Если знаете вариант еще удобнее - предлагайте.