Имя: Пароль:
1C
1С v8
в запросе Если не выбрал значение то по всем
0 SH_tan
 
27.08.14
13:50
Добрый день. Есть контрагент в нем реквизит менеджер
Как в запросе сделать чтобы когда Менеджера не выбрал в условии тогда по всем формировал.
1 Господин ПЖ
 
27.08.14
13:51
в поиске все есть
2 MaXpaT
 
27.08.14
13:52
(0) о господи ...

ГДЕ &Менеджер = &ПустойМенеджер или Контрагент.Менеджер = &Менеджер



Запрос.УстановитьПараметр("Менеджер",МойМенеджер);
Запрос.УстановитьПараметр("ПустойМенеджер",Справочники.Пользователи.ПустаяСсылка());
3 skunk
 
27.08.14
13:52
ВЫБОР
    КОГДА &ссНоменклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
    ТОГДА ИСТИНА
    ИНАЧЕ Номенклатура.Ссылка В (&ссНоменклатура)
КОНЕЦ
4 Wobland
 
27.08.14
13:57
ГДЕ ВЫБОР КОГДА Менеджер=&НеВыбрал ТОГДА ИСТИНА КОНЕЦ
5 ChiginAV
 
27.08.14
14:29
если менеджер = пустая ссылка тогда

Запрос.Текст = СтрЗАменить(Запрос.Текст, "ТекстУсловияНаМенеджераВЗапросе", "")
6 МихаилМ
 
27.08.14
17:57
в (3) неправильно, т.к. оптимизатор запроса не будет сохранять план такого запроса и каждый раз будет строить новый.

лучше как в (5) - генерировать несколько текстов запросов

либо если очень хочется универсальности , то

перейти от конструкции

менеджер = &Менеджер

к

(Менеджер >= & mivМенеджер) И  (Менеджер < & maxМенеджер).

И для заполненного значения ссылка  Менеджер = mivМенеджер  
       maxМенеджер = mivМенеджер+1;

А для незаполненого mivМенеджер = УникальныйИдентификатор("00000....0000")
maxМенеджер =  УникальныйИдентификатор("FFFF....FFFF")

но  случае  применения доп условий отимизатор может выбрать не тот индекс.


такая технология подходит дискретных значений.
Независимо от того, куда вы едете — это в гору и против ветра!