Имя: Пароль:
1C
 
Параметр в запросе: или NULL или же какое-то значение
0 bogdan51
 
20.03.08
08:55
Всем Доброго дня!
В запрос передается параметр ,например: список должностей сотрудников

Где РаботникиОрганизацийСрезПоследних.Должность В(&Должность)

Пытаюсь сделать 2 варианта ввода параметра &должность
- конкретный список. В этом случае ни каких проблем.
- пустое значение, как сигнал к выбору всех должностей
  но можно ли это обыграть как то в одной конструкции ГДЕ?
Пока не знаю,как это сделать.
В СУБД ORACLE это реализовывается просто:
nvl(&dolgn,dolgnost)=dolgnost
где &dolgn - параметр,а dolgnost - столбец таблицы

Буду благодарен за помощь. Спасибо
1 selenat
 
20.03.08
09:02
(0) используй построитель отчета..
2 Валерыч
 
20.03.08
09:02
попробуй добавить
ИЛИ РаботникиОрганизацийСрезПоследних.Должность = НЕОПРЕДЕЛЕНО
и передавать либо список, либо НЕОПРЕДЕЛЕНО
3 RomaH
 
naïve
20.03.08
09:03
Где РаботникиОрганизацийСрезПоследних.Должность В(&Должность)
ИЛИ &Должность = &ПустаяСсылка
4 Валерыч
 
20.03.08
09:04
сорри, наоборот надо
ГДЕ ВЫБОР КОДГА &Долность = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность В(&Должность) КОНЕЦ
5 selenat
 
20.03.08
09:14
(0) псмотри статью в книге знаний использование необязательных условий в запросах
6 Wladimir_spb
 
20.03.08
09:15
Условие в запросе? ТелепатБот, ответь
7 Wladimir_spb
 
20.03.08
09:16
8 Регистратор
 
20.03.08
09:19
А чо религия не позволяет собирать текст запроса программно т.е. есть ограничение списком тогда добавляем мнструкцию  в ГДЕ ..., нет ограничений не добавляем. Вобщемто куда проще.
9 selenat
 
20.03.08
09:20
(8) некошерно...
10 уродина
 
20.03.08
09:21
(8) не скажи.... мне приятнее в запросе все сделать чем собирать его по кусочкам... тем более если используются виртуальные таблицы
11 Регистратор
 
20.03.08
09:28
тут палка о двух концах,
напрмер
1.поставим в параметр &Условие  и туда добавим Истина или какоето ограничение тогда мы не увидим результирующий запрос в режиме отладки т.е. что вставлено в запрос там не подставится
2.используем построитель запроса но он не дружит с СКД
12 Регистратор
 
20.03.08
09:44
кстати на счет виртуальных таблиц - для запроса собранного вручную условия на виртуальную таблицу ставятся явно. НО я пытался выяснить в СКД когда добавляются условия (отбор) они ставятся в виртуальную таблицу или как? А если там несколько регистров и на один нужно в виртуальные таблицы а на другие нет? точного ответа получить не удалось максимум сказали что предположительно да.
13 bogdan51
 
20.03.08
11:00
Попробовал так:
   |   И ВЫБОР КОГДА &Должность=неопределено Тогда Истина Иначе РаботникиОрганизацийСрезПоследних.Должность В (&Должность) КОНЕЦ

И получаю аварийное сообщение:
Неверные параметры в операции сравнения.Нельзя сравнивать поля неограниченной длины и поля несовместимых параметров.

Параметр &должность в форме: Данные -     Должность
                          Тип значение - Список значений
                    Тип значения списка -СправочникСсылка.ДолжностиОрганизаций

То же сообщение,если в запросе вместо неопределено ставлю """".
Если же Выбор Когда &должность есть NULL Тогда Истина Иначе РаботникиОрганизацийСрезПоследних.Должность В (&Должность) КОНЕЦ,

то при не пустом параметре выборка происходит,а при пустом ничего не выбирает.
14 selenat
 
20.03.08
11:02
(13) зачем ты задаешь вопрос, если не слушаешь что тебе говорят? Чиста пообчаться?
15 Apost
 
20.03.08
11:26
(0) Может это?

ЕСТЬNULL(&dolgn,dolgnost)=dolgnost
16 bogdan51
 
20.03.08
13:32
Если кому интересно,то получилось вот как:
- доп.параметр запроса
  КолВо = Должность.Количество();
- в запросе ГДЕ ВЫБОР КОГДА КолВо=0 Тогда Истина Иначе
            РаботникиОрганизацийСрезПоследних.Должность В(&Должность) Конец
Таким образом,сразу в запросе генерируется выборка или по списку или же все
17 bogdan51
 
20.03.08
13:35
Извиняюсь ,конечно же, Когда &КолВо=0 Тогда Истина
18 неа123
 
20.03.08
13:41
(16) +
обычно пишу так:

НеНадоПроверятьВхождения = Колво = 0;

в запросе:
ГДЕ &НеНадоПроверятьВхождения
ИЛИ  РаботникиОрганизацийСрезПоследних.Должность В(&Должность)

хотя через ВЫБОР, оптимальнее, скорее всего.