Имя: Пароль:
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")

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


такая технология подходит дискретных значений.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn