|
В запросе выбрать всех | ☑ | ||
---|---|---|---|---|
0
Zend
04.12.12
✎
14:20
|
Вот допустим в запросе нужно вытащить записи с определённым Контрагентом.
Как написать условие в запросе, что если параметр будет пустой, то нужно вытаскивать всех контрагентов? ГДЕ Документ.Контрагент = &Контрагент Этот участок кода можно конечно прилеплять к тексту запроса, если Контраент определённый есть. Но как ни будь в запросе можно это указать? |
|||
1
PCcomCat
04.12.12
✎
14:23
|
В ИЕРАРХИИ (&Контрагент)
|
|||
2
Нуф-Нуф
04.12.12
✎
14:28
|
мне одному в слове "выбрать всех" показалось?
|
|||
3
mikecool
04.12.12
✎
14:29
|
ГДЕ
Документ.Контрагент = &Контрагент Или &Контрагент = Значение(Справочник.КОнтрагенты.ПустаяСсылка) |
|||
4
Heckfy
04.12.12
✎
14:30
|
Можешь еще текст запроса динамически собрать.
|
|||
5
Мыш
04.12.12
✎
14:30
|
(0) ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ
Но параметр установить всё равно придется, даже и пустой. Иначе запрос не выполнится. |
|||
6
Нуф-Нуф
04.12.12
✎
14:32
|
(1) садись, три
(2) садист, кол ГДЕ &УсловиеПоКонтрагентам Потом СтрЗаменить в зависимости от условия |
|||
7
Heckfy
04.12.12
✎
14:33
|
(4) + Как то так:
Если ЗначениеЗаполнено(Контрагент)=Истина Тогда ТекстЗапроса=ТекстЗапроса+" |ГДЕ | Документ.Контрагент = &Контрагент"; КонецЕсли; |
|||
8
Нуф-Нуф
04.12.12
✎
14:33
|
(7) и прощай конструктор?
|
|||
9
Heckfy
04.12.12
✎
14:34
|
(8) Ага. :(
|
|||
10
mikecool
04.12.12
✎
14:34
|
мой вариант круче, вернее он не мой, мне его тоже подсказали
|
|||
11
Heckfy
04.12.12
✎
14:34
|
(8) Хотя, в этом случае скорее не прощай. :)
|
|||
12
Maxus43
04.12.12
✎
14:35
|
по феншую - (3)
|
|||
13
kiruha
04.12.12
✎
14:35
|
ВЫБОР КОГДА
&Контрагент = Значение(Справочник.КОнтрагенты.ПустаяСсылка) ТОГДА Истина ИНАЧЕ Документ.Контрагент = &Контрагент КОНЕЦ |
|||
14
Maxus43
04.12.12
✎
14:36
|
(12) + точней чаще встречается
Документ.Контрагент = &Контрагент Или &ПоВсемКонтрагентам |
|||
15
_Demos_
04.12.12
✎
14:36
|
(3) если это соединяемая таблица?
|
|||
16
kiruha
04.12.12
✎
14:42
|
(14) ?
Документ.Контрагент = &Контрагент Или &Контрагент = Значение(Справочник.КОнтрагенты.ПустаяСсылка) |
|||
17
Нуф-Нуф
04.12.12
✎
14:43
|
ИЛИ в запросе - это западло
|
|||
18
Нуф-Нуф
04.12.12
✎
14:43
|
в условии ГДЕ
|
|||
19
Maxus43
04.12.12
✎
14:44
|
(16) я чаще видел условия (14) просто
|
|||
20
kiruha
04.12.12
✎
14:49
|
(17)
Большинство оптимизаторов БД правильно отрабатывают ИЛИ не занаю как в файловом варианте 1С |
|||
21
Zend
04.12.12
✎
15:47
|
Спасибо.
А как отрабатывать если булево сравнивается? |
|||
22
Fedot200
04.12.12
✎
15:52
|
(13) для СКД самое то.
|
|||
23
Zend
04.12.12
✎
15:52
|
Ну вот тоже если оно истина, то отобрать все с истиным, а если ложь то вообще все.
И тоже в запросе, а не генерацией кода. |
|||
24
Fedot200
04.12.12
✎
15:55
|
(23) не понял
|
|||
25
kotletka
04.12.12
✎
15:55
|
(22)если скд то условия никакого ненадо, потом в отбор запихнешь
|
|||
26
Zend
04.12.12
✎
16:06
|
(25) А как работать программно с этим параметром из отбора? Ну что бы на форму вывести в неупр.приложении?
(24) Ну вот если есть реквизит булевский. И нужно вывести или только те у которых он истина или вообще всех. Как вот это реализовать? ВЫБОР КОГДА &Параметр = ИСТИНА ТОГДА Документ.БулевскийРеквизит = &Параметр КОНЕЦ Не работает:( |
|||
27
hhhh
04.12.12
✎
16:37
|
(8) вот так можно
Если ЗначениеЗаполнено(Контрагент)=Истина Тогда ТекстЗапроса=СтрЗаменить(ТекстЗапроса, "Документ.Контрагент = &Контрагент", " ИСТИНА "); КонецЕсли; и конструктор по-прежнему с нами. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |