Имя: Пароль:
1C
 
Не обязательное заполнение параметра запроса
,
0 myr4ik07
 
22.07.16
15:16
ВЫБРАТЬ
    СотрудникиОрганизаций.Ссылка
ИЗ
    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
{ГДЕ
    (СотрудникиОрганизаций.Ссылка = &ГруппаСотрудников) КАК Поле2}

и хоть заполняю хоть не заполняю ГруппаСотрудников параметр постоянно показывает всех сотрудников.

Консоль запросов.
1 myr4ik07
 
22.07.16
15:16
хочу, что бы если заполнено параметр то результат с фильтром заполненного параметра, если не заполненный то по всех сотрудниках
2 Горогуля
 
22.07.16
15:17
консоли запросов поровну на твои скобки
3 myr4ik07
 
22.07.16
15:19
(2) а если в боевом то будет норм?
4 Lexey_
 
22.07.16
15:20
(3) в боевом построителе
5 Mauser
 
22.07.16
15:20
(3) Это смотря, что такое норм
6 Горогуля
 
22.07.16
15:20
в боевом построителе? в боевом схеме?
7 Mauser
 
22.07.16
15:22
в тыловом компоновщике!
8 myr4ik07
 
22.07.16
15:23
Процедура КнопкаВыполнитьНажатие(Кнопка)
    запрос = Новый Запрос;
    запрос.Текст =
    "ВЫБРАТЬ
    |    СотрудникиОрганизаций.Ссылка
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |{ГДЕ
    |    (СотрудникиОрганизаций.Ссылка В (&ГруппаСотрудников)) КАК Поле2}";
    запрос.УстановитьПараметр("ГруппаСотрудников",Реквизит1);
    
    в=  запрос.Выполнить().Выбрать();
    
    Пока в.Следующий() Цикл
        Сообщить(в.ссылка);
    КонецЦикла;
    
КонецПроцедуры

постоянно вылетают все сотрудники
9 Горогуля
 
22.07.16
15:24
(8) ага
10 Lexey_
 
22.07.16
15:24
(8) всё верно
11 myr4ik07
 
22.07.16
15:25
(10) (9) ну, яв реквизит поместил чувака, а оно мне всех чуваков выкидывает, а я хочу что бы помещенного чувака показало только
12 Mauser
 
22.07.16
15:25
не сотрудники, а сотрудники организаций
13 myr4ik07
 
22.07.16
15:26
(12) да какая разница, все ровно всех лупит
14 Горогуля
 
22.07.16
15:27
(11) где &чувак<>пустаяссылка или ссылка=&чувак
15 Горогуля
 
22.07.16
15:27
(14) =
16 myr4ik07
 
22.07.16
15:30
(14) та шо це таке, шо не так тут?


Процедура КнопкаВыполнитьНажатие(Кнопка)
    ОчиститьСообщения();
    запрос = Новый Запрос;
    запрос.Текст =
    "ВЫБРАТЬ
    |    СотрудникиОрганизаций.Ссылка
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |{ГДЕ
    |    (&ГруппаСотрудников <> ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
    |            ИЛИ СотрудникиОрганизаций.Ссылка = &ГруппаСотрудников) КАК Поле2}";
    запрос.УстановитьПараметр("ГруппаСотрудников",Реквизит1);
    
    в=  запрос.Выполнить().Выбрать();
    
    Пока в.Следующий() Цикл
        Сообщить(в.ссылка);
    КонецЦикла;
    
КонецПроцедуры
17 aleks_default
 
22.07.16
15:31
(15)Акелла промахнулся:)
18 Горогуля
 
22.07.16
15:32
(16) на счёт "три" у тебя проснётся разум и ты обратишь внимание на (2). раз, два...
19 youalex
 
22.07.16
15:32
(16) скопки
20 Горогуля
 
22.07.16
15:32
(17) НЕ <> хотел сказать ;)
21 myr4ik07
 
22.07.16
15:33
(15) так я уже без консоли, это просто обработка с одним реквизитом, там же процедура написано (16)
22 Горогуля
 
22.07.16
15:34
(21) просто обработке поровну на твои скобки. консоль, кстати - тоже просто обработка
23 myr4ik07
 
22.07.16
15:34
та ты хоть скобки хоть копки


Процедура КнопкаВыполнитьНажатие(Кнопка)
    ОчиститьСообщения();
    запрос = Новый Запрос;
    запрос.Текст =
    "ВЫБРАТЬ
    |    СотрудникиОрганизаций.Ссылка
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |{ГДЕ
    |    (НЕ &ГруппаСотрудников <> ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
    |            ИЛИ СотрудникиОрганизаций.Ссылка = &ГруппаСотрудников) КАК Поле2}";
    запрос.УстановитьПараметр("ГруппаСотрудников",Реквизит1);
    
    в=  запрос.Выполнить().Выбрать();
    
    Пока в.Следующий() Цикл
        Сообщить(в.ссылка);
    КонецЦикла;
    
КонецПроцедуры

не работает, постоянно всех чуваков вываливает
24 Горогуля
 
22.07.16
15:34
три!
25 myr4ik07
 
22.07.16
15:34
(22) а чего то не понял, так где же его применять?
26 Горогуля
 
22.07.16
15:35
(25) кого?
27 myr4ik07
 
22.07.16
15:36
(26) это дранное условие

   |{ГДЕ
    |    (НЕ &ГруппаСотрудников <> ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
    |            ИЛИ СотрудникиОрганизаций.Ссылка = &ГруппаСотрудников) КАК Поле2}";

?
28 Горогуля
 
22.07.16
15:37
это условие - в построителе или схеме
29 Borteg
 
22.07.16
15:37
(23) скобки используются только построителем, все остальное игнорирует скобки, используй в условии конструкцию выбор когда, например Выбор когда &Группасотрудников = НАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) Тогда истина Иначе СотрудникиОрганизаций.Ссылка В Иерархии &ГруппаСотрудников Конец
30 myr4ik07
 
22.07.16
15:42
(29) аааа, ану попробую
31 myr4ik07
 
22.07.16
15:44
(29) стоп, это если заполнено чувака то должно показать будет одну строчку по этому чуваку, а если не заполнено то всех чуваков?
32 Borteg
 
22.07.16
15:45
(31) это если группасотрудников не заполнена то выведется все, если заполнено то сотрудники в этой группе.
33 myr4ik07
 
22.07.16
15:46
(32) http://prntscr.com/bw48wm какой то бред показывает, я ж хочу что бы если чувак заполнен то показать одного только чувака, одну строку, а если нет то показать всех чуваков, куча строчек
34 Borteg
 
22.07.16
15:47
(33) осталось применить это конструкцибю в нужном место, в секции где
35 Горогуля
 
22.07.16
15:48
(33) есть такое слово: булева алгебра
36 Borteg
 
22.07.16
15:48
"ВЫБРАТЬ
    |    СотрудникиОрганизаций.Ссылка
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |ГДЕ
    |    Выбор Когда &ГруппаСотрудников = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) Тогда Истина Иначе
    |             СотрудникиОрганизаций.Ссылка = &ГруппаСотрудников) КАК Поле2}";
37 Borteg
 
22.07.16
15:49
(36) скобку вконце убери
38 Генератор
 
22.07.16
15:50
для этого ж построитель придумали, и в конструкции "где" не задавать равно, а вид условия задавать в элемента отбора построителя: добавил элемент будет отбор, не добавил не будет
39 Горогуля
 
22.07.16
15:50
(36) с ИЛИ как-то элегантней
40 Borteg
 
22.07.16
15:50
(39) вообще неэлегантно( и запрос просто жесть наверное по плану, все или в условиях это огромная нагрузка
41 myr4ik07
 
22.07.16
15:52
(36) ну ты даешь,

ВЫБРАТЬ
    СотрудникиОрганизаций.Ссылка
ИЗ
    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
    ВЫБОР
            КОГДА &ГруппаСотрудников = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
                ТОГДА ИСТИНА
            ИНАЧЕ СотрудникиОрганизаций.Ссылка = &ГруппаСотрудников
        КОНЕЦ

пашет, вот спасибо
42 myr4ik07
 
22.07.16
15:52
не доганяю конечно, почему так ... но пашет
43 Горогуля
 
22.07.16
15:53
(42) надо было на лекции ходить
44 Borteg
 
22.07.16
15:55
(42) да там вроде все очень просто. сначала выбор идет(выбираются все записи из справочника), потом накладываешь условие, в нем сначала смотришь если заполнено значение тогда применяешь условие что сотрудник = сотрудник, если не заполнено то фиктивное условие применяешь ИСТИНА.  Истина это просто фиктивное условие ничего не значащее
45 myr4ik07
 
22.07.16
16:00
(44) т.е., если я конструкцию лупашу в поля выборки то для каждого результата будет результат который выдаст Выбор когда, из за того, показывало постоянно всех сотрудников но просто или Да (истина) или выбранный чувак, а что бы только чувака выбирать нам же нужно Условие, а в полях выборки мы не можем наложить условие на вывод количества записей.

ну как бы понятно, спасибо