Вход | Регистрация
 

Параметры или отборы в СКД

Параметры или отборы в СКД
Я
   Droning1C
 
26.02.21 - 14:11
Добрый день!
Предположим, сформировали мы здоровенный отчет. После формирования был применен отбор. Система заново запросит весь огромный набор данных, а потом применит отбор или отберет записи по уже готовому набору? Если отберет уже по готовому набору, то где он хранится?
   Droning1C
 
1 - 26.02.21 - 14:11
Извините, если вопрос тупой, то ткните в литературу, пожалуйста, почитаю.
   ДенисЧ
 
2 - 26.02.21 - 14:13
ЯНХНП.
Куда отбор был применён?
   Droning1C
 
3 - 26.02.21 - 14:21
(2) пользователем на форме
   Droning1C
 
4 - 26.02.21 - 14:23
(2) например отчет показывает инфу в разрезе подразделений. в качестве параметры в запрос, формирующий набор данных, подразделение НЕ передается. Т.Е. выводится по кнопке сформировать весь набор данных. Набор данных вывелся. Пользователь ставит отбор по подразделению. Система заново запросит весь огромный набор данных, а потом применит отбор или отберет записи по уже готовому набору? Если отберет уже по готовому набору, то где он хранится?
   vicof
 
5 - 26.02.21 - 14:24
Заново
   Droning1C
 
6 - 26.02.21 - 14:25
(5) Если заново, то в чем тогда принципиальное отличие параметров запроса от отборов?
   Droning1C
 
7 - 26.02.21 - 14:26
ну разве что периоды и параметры виртуальных таблиц обязательно в параметры запроса надо пихать. а по остальным в чем разница?
   Droning1C
 
8 - 26.02.21 - 14:33
параметр применится раньше, отбор применится позже. Только в этом?
   Kassern
 
9 - 26.02.21 - 14:35
(6) параметр запроса влияет на формирование итоговой таблицы запроса, а отбор на форме работает с уже итоговой таблицей. Получается если ты берешь взаиморасчеты по 60тыс клиентов и потом отбором на форме отбриваешь только РогаИКопыта, то будет одно время формирования отчета, а если ты параметром укажешь в запросе что выбирать только клиентов из таблицы где Партнер= РогаИКопыта, то будет совсем другое время формирование отчета.
   ДенисЧ
 
10 - 26.02.21 - 14:35
(9) Ну не гони...
   Kassern
 
11 - 26.02.21 - 14:36
(10) хочешь сказать, что время выполнения отчета будет одинаковое?
   Droning1C
 
12 - 26.02.21 - 14:38
(9) тогда почему во всех типовых разрабы предпочитают отборы параметрам?
   ДенисЧ
 
13 - 26.02.21 - 14:38
(11) Зависит от отбора. Если ты берёшь примитивный запрос к остатку и склад в параметры, а номенклатуру в отбор - то да. Одинаковое.
Достаточно посмотреть на результирующий скдшный запрос.
   ДенисЧ
 
14 - 26.02.21 - 14:38
(12) Отборы более гибко настраиваются.
   toypaul
 
15 - 26.02.21 - 14:42
параметр всегда есть в запрос
отбор не всегда. но часто
   toypaul
 
16 - 26.02.21 - 14:43
(12) параметр поскольку он всегда в запросе (хотя есть вариант что он может быть оттуда исключен) нужно всегда заполнять. а это не всегда нужно.
   Classic
 
17 - 26.02.21 - 14:43
(15)
Какой параметр всегда есть в запросе?
   toypaul
 
18 - 26.02.21 - 14:44
а еще параметр всегда (100%) будет применен именно там в запросе, где он написан. а отбор не всегда :)
   toypaul
 
19 - 26.02.21 - 14:45
(17) любой параметр есть в запросе. поскольку он оттуда взят. если мы ведем речь про те параметры, которые влияют на выборку данных (то есть запрос)
   Classic
 
20 - 26.02.21 - 14:47
(19)
Не совсем понимаю, что ты пишешь.

Параметр ВСЕГДА ЕСТЬ в запросе
или
Параметр всегда есть В ЗАПРОСЕ
?
   Kassern
 
21 - 26.02.21 - 14:50
(13) да действительно, сейчас в профайлере глянул, запрос одинаковый на скуль идет, что параметром, что отбором по простой таблице
   mikecool
 
22 - 26.02.21 - 14:51
(8) нет, отборы могут применяться параллельно с параметрами или вместо них, включая и отборы в параметрах вирт таблицах
   toypaul
 
23 - 26.02.21 - 14:51
(20) параметр всегда действует на запрос (если не использованы специальные шаманские методы). а отбор действует только тогда, когда он применен. параметр применен всегда.
   Droning1C
 
24 - 26.02.21 - 14:51
(13) (21) Хорошо, а в каких случаях выбор параметр или отчет будет принципиально важным?
   Droning1C
 
25 - 26.02.21 - 14:52
(24) с точки зрения быстродействия
   Kassern
 
26 - 26.02.21 - 14:54
(21) отобрал клиентов по коду в параметре и по отбору в запросе, скулю же 1ска шлет одно и то же:
exec sp_executesql N'SELECT
T1._IDRRef,
T1._Description,
T1._Fld20495RRef,
T1._IDRRef,
T1._Description
FROM dbo._Reference199 T1
WHERE ((T1._Fld1061 = P1)) AND ((T1._Code = @P2))',N'P1 numeric(10),@P2 nvarchar(4000)',0,N'УТ-00048609'
   vicof
 
27 - 26.02.21 - 14:57
(26) В виртуальных таблицах поотбирай)
   Mikeware
 
28 - 26.02.21 - 15:02
(24) когда пользователю отбор настраивать надо... самому. и гибко.
   Droning1C
 
29 - 26.02.21 - 15:08
(28) а с точки зрения быстродействия?
   Кир Пластелинин
 
30 - 26.02.21 - 15:09
(23) дык для параметра же можно указать "использование" - "всегда" или "авто", а так же запрет незаполненных значений.
(25) тут нет никаких "принципиально важным", т.к. все в первую очередь упирается в сам текст запроса и логику получения требуемых данных. Параметр (если грубо) - жестко прописан в тексте запроса на предмет "равно, не равно, в иерархии и прочее" например. Отбор же более гибок, т.к. позволяет в пользовательском режиме вертеть им как угодно. К тому же разработчик может явно указать момент применения того или иного отбора. поправьте меня, если не прав
 
 Рекламное место пустует
   vicof
 
31 - 26.02.21 - 15:11
(29) Быстродействие понятие более многогранное, чем выбор отбора и параметра.
   vicof
 
32 - 26.02.21 - 15:11
(31) *или параметра
   Droning1C
 
33 - 26.02.21 - 15:13
(32) понятно, что нужен какой-то пример. Но в целом, может ли кто-то привести пример, когда с точки зрения быстродействия выбор между параметром и отбором однозначен?
   Mikeware
 
34 - 26.02.21 - 15:24
(30) всегда или авто- вроде как зависит от текста запроса
(29) (33) запрос при применении отборов будет обрабатываться СКДшным "препроцессором", который будет применять СКДшное расширение языка запросов в зависимости от отборов.
поэтому на сервер могут уйти и совершенно одинаковые запросы.
   AceVi
 
35 - 26.02.21 - 15:25
(33) Например выборка за период по временной таблице Хозрасчетный.Остатки()
И например тебе нужен 1 конкретный контр если ты используешь параметр скд и подставишь его в параметры виртуальной таблицы у тебя будет 10 строк
а ели применишь отбор скд - то у тебя будет таблица на 1000 строк, из которой система по указке твоего отбора выберет 10.

Что быстрее сразу получить таблицу на 10 строк или воландаться с таблицей на 1000 смотри сам.
быстродействие у каждого свое.
   ДенисЧ
 
36 - 26.02.21 - 15:49
(35) чушЬ не пори. Выше уже написано всё.
   Mikeware
 
37 - 26.02.21 - 15:51
(35) почему? указать в фильтре виртуальной таблицы {(Контрагент.*)}, и получишь то же самое
   Classic
 
38 - 26.02.21 - 18:04
(29)
Что может быть такого особого в быстродействии?
Запрос все равно будет преобразован в скулевый.
В скуле ничего кроме where и having нет.
   Mikeware
 
39 - 26.02.21 - 18:09
(38) отбор внутри виртуальной таблицы будет быстрее, чем постобработка
   Classic
 
40 - 26.02.21 - 18:25
(39)
То понятно, я про то, что как 1С принципиально по-разному отработает отбор или параметр.
   ДедМорроз
 
41 - 26.02.21 - 18:39
Начнем с того,что в общем случае,при задании параметра или отбора у него ставится галка,и текст запроса трансформируется согласно новым условиям,то есть будет выполняться новый запрос,и скуль решит,есть ли что-то в кеше или нет для его быстрого выполнения.
   Droning1C
 
42 - 27.02.21 - 10:23
(41) а поподробнее можно? Тоесть все же есть некий кэш, который оптимизирует выполнение повторного запроса, если запрос не модифицирован?
   ДенисЧ
 
43 - 27.02.21 - 10:39
(42) Есть. Называется SQL Server )))
   rozer76
 
44 - 27.02.21 - 11:09
(15) ну если снять галку Автозаполнение то отборы тоже можно сделать "всегда" и в нужном месте а то с автозаполнением СКД чудит иногда и вместо отбора в вирт таблице пихает в ГДЕ и тогда печаль...


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.