Имя: Пароль:
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) т.е., если я конструкцию лупашу в поля выборки то для каждого результата будет результат который выдаст Выбор когда, из за того, показывало постоянно всех сотрудников но просто или Да (истина) или выбранный чувак, а что бы только чувака выбирать нам же нужно Условие, а в полях выборки мы не можем наложить условие на вывод количества записей.

ну как бы понятно, спасибо
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший