|
Необязательный параметр. | ☑ | ||
---|---|---|---|---|
0
wade25
16.10.11
✎
13:07
|
Допустим есть запрос
ВЫБРАТЬ ОстаткиТоваров.Номенклатура, ОстаткиТоваров.Партия, ОстаткиТоваров.Количество ИЗ РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров ГДЕ ОстаткиТоваров.Номенклатура = &Номенклатура И ОстаткиТоваров.Партия = &Партия Например, я хочу, чтобы выводило всю Номенклатуру т.е. убрать условие Где Номенклатура = &Номенклатура. Сейчас делаю либо 2 запроса с условием перед или +Функция()+, а есть способ просто сделать необязательный параметр, т.е. если он задан, то передаем, если нет так нет или по умолчанию, что то типа как в C# "условный параметр" =) |
|||
1
zak555
16.10.11
✎
13:07
|
где виртуальная таблица ?
|
|||
2
wade25
16.10.11
✎
13:08
|
(1) Ну я так набросал =)
|
|||
3
zak555
16.10.11
✎
13:08
|
> всю Номенклатуру
по котором есть остатки или по всей имеющийся ? |
|||
4
zak555
16.10.11
✎
13:09
|
(2) фигню набросал
|
|||
5
zak555
16.10.11
✎
13:09
|
это ты к спецу так готовишься ?
|
|||
6
wade25
16.10.11
✎
13:11
|
(5) Нет конечно =)
(4) Вот допустим. ВЫБРАТЬ ОстаткиТоваровОстатки.Номенклатура, ОстаткиТоваровОстатки.Партия, ОстаткиТоваровОстатки.КоличествоОстаток ИЗ РегистрНакопления.ОстаткиТоваров.Остатки(, Номенклатура = &Номенклатура) КАК ОстаткиТоваровОстатки Не хочу передавать параметр "номенклатура", пускай выводит мне всю которая есть, как сделать необязательным? =) |
|||
7
zak555
16.10.11
✎
13:13
|
(6) убери Номенклатура = &Номенклатура
|
|||
8
wade25
16.10.11
✎
13:15
|
(7) =))) Я про что и говорю, допустим отчет. Если пользовательно говорит хочу по всей номенклатуре вывести отчет, то выводит, а если по определенной задал, то по ней. Чтобы не писать 2 запроса как сделать?
|
|||
9
ДенисЧ
16.10.11
✎
13:17
|
(8) открой для себя СтрЗаменить()...
|
|||
10
zak555
16.10.11
✎
13:17
|
(8) левое соединение спр номенклатуры и виртуальной таблицы остатки регистра ОстаткиТоваров
|
|||
11
Jolly Roger
16.10.11
✎
13:26
|
(0) кури построитель запроса...
|
|||
12
kuza2000
16.10.11
✎
13:41
|
Все есть в СКД и построителе, смотри выражения с {}
|
|||
13
DrShad
16.10.11
✎
14:17
|
(9) +100500
если не задан, то меняешь на Истина, если задан то подставляешь в текст условие |
|||
14
Amiralnar
16.10.11
✎
14:35
|
Я знаю особое кунгфу!
ВЫБОР КОГДА &Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ Номенклатура = &Номенклатура КОНЕЦ |
|||
15
Зеленый Кот
16.10.11
✎
15:10
|
да твое кунгфу - лучшее...
|
|||
16
kuza2000
17.10.11
✎
01:34
|
(14) А вот так писать крайне не желательно. Оптимизатор БД не сможет использовать индексы и другие полезные вещи, и будет сканировать всю таблицу номенклатуры и прогонять ее через это выражение. Независимо от того, что в параметре - такой трюк выше его понимания. Проверено неоднократно.
|
|||
17
guitar_player
17.10.11
✎
06:43
|
(0) Пользуйся построителем запроса, будь мужиком.
|
|||
18
guitar_player
17.10.11
✎
06:47
|
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.Текст = " |ВЫБРАТЬ |ОстаткиТоваровОстатки.Номенклатура, |ОстаткиТоваровОстатки.Партия, |ОстаткиТоваровОстатки.КоличествоОстаток |ИЗ |РегистрНакопления.ОстаткиТоваров.Остатки(, {(Номенклатура = &Номенклатура) КАК Номенклатура}) КАК ОстаткиТоваровОстатки"; Если НуженОтборПоНоменклатуре Тогда Отбор = ПостроительЗапроса.Отбор.Добавить("Номенклатура"); Отбор.Использование = Истина; Отбор.ВидСравнения = ВидСравнения.Равно; Отбор.Значение = Номенклатура; КонецЕсли; |
|||
19
guitar_player
17.10.11
✎
06:48
|
(18) ну и дальше...
|
|||
20
guitar_player
17.10.11
✎
06:48
|
Запрос = ПостроительЗапроса.ПолучитьЗапрос();
Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |