|
8.2 Условие на пустой список значений в запросе | ☑ | ||
---|---|---|---|---|
0
adron
22.08.13
✎
16:49
|
Дано:
В запросе есть условие, в качестве параметра выступает список. Задача: Написать запрос с условием так, чтобы: если список пуст - выдавались все данные, если нет - отрабатывало условие. Вот тут: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=584175 дали совет - условие можно заключить в фигурные скобки но у меня не получается - условие не срабатывает. Вопрос: почему такой приём не срабатывает у меня?. Кусок запроса, который работает не так как нужно (выдает всю номенклатуру вне зависимоcти от того заполнен параметр или нет): ВЫБРАТЬ НоменклатураСегмента.Номенклатура, НоменклатураСегмента.Сегмент.Ответственный КАК Менеджер ПОМЕСТИТЬ ВТ_ТоварыМенеджеров ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента {ГДЕ НоменклатураСегмента.Сегмент.Ответственный В ИЕРАРХИИ (&МассивМенеджеров)} |
|||
1
viktor_vv
22.08.13
✎
16:53
|
А как ты параметр задаешь ?
Я так подозреваю фигурные скобки влияют, если не установлен параметр, то условие не отрабатывается. |
|||
2
mikecool
22.08.13
✎
16:54
|
(1) смотря где ,в консоли запросов не отработают
|
|||
3
ReaLg
22.08.13
✎
16:58
|
Как вариант:
ГДЕ &УсловиеНаСписок далее в коде если список пустой - СтрЗаменить(Запрос.Текст, "&УсловиеНаСписок", "ИСТИНА") если не пустой - заменяешь на свое условие. |
|||
4
chigsrOck
22.08.13
✎
17:00
|
а почему не ввести еще один параметр &СписокЗаполнен и в условиях прописать Выбор когда &СписокЗаполнен тогда номенклатура в(&СписокНоменклатуры) иначе истина конец ?? По-моему проще читается?
|
|||
5
viktor_vv
22.08.13
✎
17:06
|
(2) Ну да, они у меня и просто в запросе не отрабатывают, хотя это таже консоль наверное. Я так понял это для построителя.
|
|||
6
acsent
22.08.13
✎
17:07
|
используй построитель
|
|||
7
vhl
22.08.13
✎
17:10
|
Запрос = Новый ПостроительЗапроса;
Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |{ГДЕ | Номенклатура.Родитель}"; Если СписокРодители.Количество() > 0 Тогда ЭлементОтбора = Запрос.Отбор.Добавить("Родитель"); ЭлементОтбора.Установить(СписокРодители); КонецЕсли; Запрос.Выполнить(); Результат = Запрос.Результат; |
|||
8
adron
22.08.13
✎
17:12
|
(1) Вот так:
Если ЗначениеЗаполнено(Менеджеры) Тогда Запрос.УстановитьПараметр("МассивМенеджеров",Менеджеры.ВыгрузитьЗначения()); КонецЕсли; |
|||
9
adron
22.08.13
✎
17:13
|
(3) в итоге примерно так и делаю, только со скобками короче:
ГДЕ ВЫБОР КОГДА &ПрименятьУсловиеМенеджер ТОГДА НоменклатураСегмента.Сегмент.Ответственный В ИЕРАРХИИ (&МассивМенеджеров) ИНАЧЕ 1 = 1 КОНЕЦ |
|||
10
viktor_vv
22.08.13
✎
17:14
|
Так тоже не длинное
Где &ПрименятьУсловиеМенеджер и НоменклатураСегмента.Сегмент.Ответственный В ИЕРАРХИИ (&МассивМенеджеров) |
|||
11
adron
22.08.13
✎
17:15
|
(7) Попробую, спасибо.
|
|||
12
adron
22.08.13
✎
17:16
|
(10) согласен, но появляется ещё один параметр, и его установка...
|
|||
13
MSOliver
22.08.13
✎
17:16
|
1=1, истина
|
|||
14
adron
22.08.13
✎
17:16
|
тут больше вопрос в том МОЖНО ли скобки использовать. А не в том как ВООБЩЕ можно обыграть. Хочу для себя определиться:)
|
|||
15
MSOliver
22.08.13
✎
17:17
|
А фигурное скобки зачем знаешь?
|
|||
16
adron
22.08.13
✎
17:18
|
(15) Вопроса не понял:) У меня был опыт написания отчета/запроса в СКД. Там скобки отрабатывали для пустого параметра как надо.
|
|||
17
viktor_vv
22.08.13
✎
17:19
|
(10)+ Только там ИЛИ надо.
|
|||
18
adron
22.08.13
✎
17:21
|
(7) Блин построитель не работает с временными таблицами - нет свойства МенеджерВременныхТаблиц:(
|
|||
19
viktor_vv
22.08.13
✎
17:30
|
(18) А ты из запроса тяни текст полученного запроса и выполняй его в обычном запросе.
Хотя так уже проще дополнительный параметр загнать. |
|||
20
adron
22.08.13
✎
17:33
|
(10) не так
(17) и не так а похоже вот так ГДЕ &ВсеМенеджеры или НоменклатураСегмента.Сегмент.Ответственный В (&МассивМенеджеров) ВсеМенеджеры - истина, если список пуст |
|||
21
adron
22.08.13
✎
17:34
|
Ладно, похоже что со скобками не канает:(
|
|||
22
viktor_vv
22.08.13
✎
17:36
|
(20) Ну таки да, примерно так и подразумевал, особо не вдаваясь в смысл паарметров :).
|
|||
23
vhl
22.08.13
✎
17:38
|
вообще в книге было: http://kb.mista.ru/article.php?id=269 несколько вариантов
|
|||
24
adron
22.08.13
✎
17:38
|
(22) спасибо за подсказку. Такое написание приемлимо.
|
|||
25
adron
22.08.13
✎
17:41
|
(23) забыл про книгу. Спасибо за ссылку будем учить матчасть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |