Имя: Пароль:
1C
1С v8
Отличие отбора от параметра в СКД
,
0 Очень Любознательная
 
09.08.18
03:25
Здравствуйте. При создании отчёта в СКД есть 2 вкладки - "отборы" и "параметры". В чём их разница? Нагуглила только отличие на уровне реализации и выполнения запросов к SQL, а чисто в практическом плане? Когда нужно создавать отбор, а когда - задавать параметр?
1 perester
 
09.08.18
04:01
Ну дык отличие на уровне реализации и выполнения запросов к SQL, а в практическом плане - скорость
Нужно создавать отбор когда это ресурс, а когда это измерение - задавать параметр
Это не только в отчетах СКД, но и во всех запросах, рекомендую найти обработку "Консоль запросов"
2 Галахад
 
гуру
09.08.18
04:36
Гм. Если отбор нужен постоянно, то наверное его стоит вынести в параметры, что бы пользователю было удобно и понятно. Например период.
3 FIXXXL
 
09.08.18
09:39
(0)
отборы - можно включать-выключать по желанию, параметры - нет
4 Fragster
 
гуру
09.08.18
09:53
(1)(2)(3) все неправильно :)
5 Fragster
 
гуру
09.08.18
09:53
отборы можно добавлять в пользовательском режиме, параметры - только включать и выключать.
6 Fragster
 
гуру
09.08.18
09:54
ещё отборы можно "прятать" под представление, оставив только галочку использования, но почему-то этим редко кто пользуется
7 Fragster
 
гуру
09.08.18
09:55
параметры есть только у наборов данных-запросов, отборы у всех
8 Fragster
 
гуру
09.08.18
09:57
параметры, соответственно, действуют на запросы, отборы могут относиться не только к запросам (уровень отчета), но и к конкретным группировкам
9 Deon
 
09.08.18
10:01
У отбора есть "Вид сравнения", который пользователь может сам менять, а у параметра нету. Пичаль.
10 segn
 
09.08.18
10:01
Добавлю свои 5 копеек. Параметры задает разработчик, а добавлением отбора управляет пользователь.
Параметром можно сделать такую вещь: например создать параметр "Ед. изм." и для него сделать доступный список "руб.", "тыс. руб.". Пользователь может выбирать нужное значение из списка, и данные в отчете будут выходить в рублях или в тыс. рублях (надо в тексте запроса анализировать значение параметра и делить на 1000). Так же параметром можно управлять периодичностью. В отборах нет такой возможности.
11 AlvlSpb
 
09.08.18
10:30
И мои 5 коп.
Отбор - это определенный фильтр на полученный результат действия, Параметр - это условие получения результата
12 Birmingem
 
09.08.18
10:42
Объясните пожалуйста, почему в отчете на СКД такое?
Если у параметра (например Организация) поставить галочку "Включать в доступные поля" он конечно появляется в списке доступных полей на вкладке Отбор.
Но если добавить этот параметр в список отборов, то при формировании отчета выходит ошибка "Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля "ПараметрыДанных.Организация Равно ""
Т.е. параметр нельзя засунуть в отбор?
13 segn
 
09.08.18
10:56
(12) Нельзя
14 FIXXXL
 
09.08.18
11:15
(5) ну и как ты "выключишь" отбор по параметру, не извращаясь в тексте запроса?
15 Fragster
 
гуру
09.08.18
11:20
(14) открой для себя вкладку "компоновка данных" в конструкторе запросов
16 Fragster
 
гуру
09.08.18
11:22
она, конечно, лепит чушь, но, например, необязательные параметры виртуальных таблиц прям мышкой задаются.
ну, а если написать
{ГДЕ
Таблица.Поле = &Параметр}
то параметр в СКД будет не обязательным и условие, если снять галку использования, включаться в текст запроса не бедут
17 FIXXXL
 
09.08.18
11:26
(15) я говорил за "жесткую" параметризацию, без {}
18 Fragster
 
гуру
09.08.18
11:50
(17) необязательные параметры в СКД указываются в выражениях с фигурными скобками. как и отборы (если выключить автозаполнение)
19 FIXXXL
 
09.08.18
12:09
(18) "Параметры" в понятиях СКД, это обязательные параметры и ничего более. Т.е. у нас с тобой просто путаница в терминах :)
20 Вафель
 
09.08.18
12:11
(19) а необязательные параметры тогда что такое?
21 Fragster
 
гуру
09.08.18
12:18
(19) ой, всё. https://i.imgur.com/nleY0f2.png
22 FIXXXL
 
09.08.18
12:43
(21) и?
со снятой галкой - "Ошибка исполнения отчета."
23 Fragster
 
гуру
09.08.18
12:45
(22) правильно. это значит, что возможность выключить (использование = авто + {} в запросе) предоставляется и является штатной возможностью, а не извращшением.
24 FIXXXL
 
09.08.18
12:50
(20) >>>(использование = авто + {} в запросе)

ну то есть без {} не выключишь?
25 Fragster
 
гуру
09.08.18
12:51
(24) без {} выключишь, но будет ошибка запроса при использовании "авто"
26 FIXXXL
 
09.08.18
12:52
(20) и чем они отличаются от Отбора?

я не спорю, мне интересно :)
27 Fragster
 
гуру
09.08.18
12:54
(26) тем, что попадание отбора в запрос совсем не обязательно
28 Fragster
 
гуру
09.08.18
12:54
отбор можно добавить свой
29 Fragster
 
гуру
09.08.18
12:54
пользователь может
30 FIXXXL
 
09.08.18
12:55
(27) что значит "попадание"?
31 Cyberhawk
 
09.08.18
12:56
(11) В обоих случаях фильтр применяется до получения данных из БД
32 Fragster
 
гуру
09.08.18
12:58
(31) отбор не всегда так применяется, а во вторых - есть еще наборы данных не запросы
33 Fragster
 
гуру
09.08.18
13:02
хотя с другой стороны я и параметры использовал в качестве передаваемых от пользователя в ПриКомпоновкеРезультата, чтобы свою форму не рисовать
34 FIXXXL
 
09.08.18
13:02
(32) давайте пока ограничимся Запросами :)

насколько вижу, секция {ГДЕ...} играет видимую роль только при отключении Автозаполнения
она в явном виде описывает поля, которые доступны к отбору
35 FIXXXL
 
09.08.18
13:03
(33) кодом можно развернуться, не спорю )
36 Fragster
 
гуру
09.08.18
13:04
(34) -> (16) это будет ПАРАМЕТР, а не отбор
37 Cyberhawk
 
09.08.18
13:05
(34) Эта секция не только описаывает доступные поля, но и указывает, что отбор отчета будет обязательно добавлен в эту секцию запроса
38 Fragster
 
гуру
09.08.18
13:06
у которого можно выключить использование - и условие пропадет.
А еще условие может быть не =, а целым выражением, которое пропадет, если выключить использование у всех параметров внутри него.
39 Cyberhawk
 
09.08.18
13:07
Вообще с отборами попадос, когда несколько наборов данных. Тогда если в отборе отчета добавлено условие с полем дочернего набора, то соединение будет внутренним, а не левым )
40 FIXXXL
 
09.08.18
13:09
(36) сделайте Отбор при снятом Автозаполнении по полю, которого нет в секции {ГДЕ...}
41 Fragster
 
гуру
09.08.18
13:10
(40) для использования (16) не надо снимать автозаполнение
42 FIXXXL
 
09.08.18
13:13
(41) чем (16) отличается от указания Отбора?
43 FIXXXL
 
09.08.18
13:13
(42) + при установленном Автозаполнении
44 Fragster
 
гуру
09.08.18
13:15
(42) тем, что можно указать, например,
Выбор Когда Таблица.Регистратор Ссылка Документ.Документ Тогда
  Таблица.Поле = &Параметр
Иначе Истина
Конец
  и весь этот кусок будет выключен при снятии использования у параметра
45 Fragster
 
гуру
09.08.18
13:16
кстати, при автозаполнении 1с сама создает необязательные параметры для периода, которые можно переопределить, использовав {} в нужных местах, и которые работают точно так же - через использование
46 Fragster
 
гуру
09.08.18
13:19
в виртуальных таблицах
47 Вафель
 
09.08.18
13:21
у отбора есть вид  сравнения. а у параметра нет
48 FIXXXL
 
09.08.18
13:41
(44) всё, понял
просто не пользовался таким, сколь извращенные отчеты не писал :)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.