Имя: Пароль:
1C
1С v8
Запрос: Конструкция ВЫБОР в условии ГДЕ
0 slafor
 
23.03.23
10:01
Есть запрос. Приблизительно такой:

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


И тут у меня возникает такое ощущение, что если ИСТИНА будет и в &ВыводитьВсе, и в &ВыводитьПоСотруднику, и в &ВыводитьПоПользователю, то все эти условия будут выполняться (ну кроме ИНАЧЕ, естественно). Я не прав?
1 Garykom
 
гуру
22.03.23
23:03
(0) эээ
2 Garykom
 
гуру
22.03.23
23:04
это не так делается
3 НафНаф
 
22.03.23
23:19
(0) слишком много параметров. Вообще для этого отборы есть. Но если хочется параметрами, то надо делать отдельные условия.
5 magicSan
 
23.03.23
04:54
пиоверяй на пустое значение
6 Конструктор1С
 
23.03.23
05:17
(0) плохое решение, очень плохое
7 Chameleon1980
 
23.03.23
08:33
первое успешное (истина) выполнится - остальные нах
8 Fish
 
гуру
23.03.23
08:56
(0) Ты не прав.
9 lEvGl
 
гуру
23.03.23
09:58
это как Если, какое первое истина, то и отработает, остальное нет
10 Eiffil123
 
23.03.23
14:12
(0) прав. но это можно проверить на форме отчета, чтобы пользователь не наставил неправильных комбинаций флажков
11 slafor
 
23.03.23
15:57
(6) Кто же спорит? ) Это всего лишь попытка быстро переписать решение из оригинала, чтобы можно было понять основную суть.
А в реальности там идет сравнение типа

КОГДА &ВыводитьПоГруппеСотрудников1
ТОГДА Сотрудник в(&СписокСотрудников1)
КОГДА &ВыводитьПоГруппеСотрудников2
ТОГДА Сотрудник в(&СписокСотрудников2) ,  и т.д.

Т.е. в самих условиях все правильно, тут просто где-то прочитал, что конструкции в запросе "ВЫБОР КОГДА КОГДА ИНАЧЕ" не то же самое, что конструкции в коде "ЕСЛИ ИНАЧЕЕСЛИ ИНАЧЕ", вот и спросил.
12 НафНаф
 
23.03.23
16:03
(11) все равно это бред
13 Галахад
 
гуру
23.03.23
16:06
(11) Условия проверяются по порядку, если какое-то сработало далее условия не проверяются.
14 slafor
 
23.03.23
16:19
(12) Почему бред?

(3) Отборы нужны, если понятно, какой отбор нам нужен. А тут мы в поисках.

В любом случае, можно сделать несколько отдельных запросов по разным условиям, а потом в событии ПриСозданииНаСервере подменять запрос тем, который нам нужен.

Да, я просто забыл уточнить, что это запрос динамического списка. А там конструкцию ВЫБОР в условии ГДЕ использовать не рекомендуется.
15 slafor
 
23.03.23
16:21
(13)(9) Спасибо, вот именно это я и хотел уточнить.
16 azernot
 
23.03.23
16:23
(14) В динамическом списке лучше установить отбор штатными методами, а не мудрить с запросом
17 azernot
 
23.03.23
16:30
Например, в БСП есть процедура
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
18 magicSan
 
23.03.23
16:48
(17)это очень тупой метод он в рабочих местах самое слабое место дико тормозит
19 azernot
 
23.03.23
18:55
(18) Даже и не знаю, что сказать? Может не в бобине дело?
20 magicSan
 
23.03.23
18:58
(19) Ну открой типовую и глянь - ох или не надо делать более одного отбор??? там ведь в цикле вначале один затем второй
21 azernot
 
23.03.23
19:06
(20) Вы к тому, что указанный метод сначала рекурсивно ищет, а не установлен ли уже ранее отбор по этому полю и только потом меняет или добавляет его? А по мне - так правильно делает.
Но, если вы уверены, что такого отбора нет, можете сразу использовать ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки или, если вам этот элемент отбора уже известен используйте ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора
В общем, всё в ваших руках :)
22 Волшебник
 
23.03.23
19:54
О, пошла битва магов!
23 Garykom
 
гуру
23.03.23
20:50
кто подскажет отборы в СКД на каком уровне работают?
24 eddy_n
 
23.03.23
21:46
(23) Про уровни группировок спрашиваешь?
25 Garykom
 
гуру
23.03.23
21:55
(24) Про все
Если в отборе пользователь нахреначил сложных условий с группами и через "." объектов-ссылок

Где и как реально это исполняется?
Сервер 1С сам крутит или все же запросы дополняет к СУБД?
26 magicSan
 
23.03.23
21:55
(23) в субд прилетает условие
27 magicSan
 
23.03.23
21:57
(21) Я к тому что в типовом рм при настройке списка благодаря этому любой отбор работает пол   минуты на пустом месте
28 Garykom
 
гуру
23.03.23
22:00
(26) я столкнулся с тем что если в отборе добавлять условия через точку
например Объект.Организция = Значение
где объект это Измерение РС
то пипец тормозит

а если это же сделать в исходных запросах (в ИсточникДанных1) то нет
29 rudnitskij
 
23.03.23
22:49
(0) "ИНАЧЕ Ответственный = ЛОЖЬ (т.е. ничего не выводить)
КОНЕЦ"
--------------------
Ответственный тут при чем? если не надо ничего выводить - просто "... ИНАЧЕ ЛОЖЬ КОНЕЦ"
30 rudnitskij
 
23.03.23
22:50
(28) Особенно если измерение составных типов, да?
31 Garykom
 
гуру
23.03.23
23:01
(30) угадал ))
32 rudnitskij
 
23.03.23
23:06
(31) юзайте ВЫРАЗИТЬ
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший