Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Значение() или параметр запроса?

Значение() или параметр запроса?
Я
   Начинающий одинэсник
 
03.06.21 - 17:43
Привет,
Есть 2 запроса:

ВЫБРАТЬ
   ЗаказКлиента.Ссылка
ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ ЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)

Или такой вариант:

ВЫБРАТЬ
   ЗаказКлиента.Ссылка
ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ ЗаказКлиента.Статус = &Закрыт

и передача параметра &Закрыт в запрос.

В документации не нашел ответа на следующий вопрос:
В случае использования конструкции ЗНАЧЕНИЕ() в запросе, будет ли для каждой строки таблицы ЗаказКлиента происходить запрос к перечислению, или оно умное и получит значение перечисления всего 1 раз? Как в случае с передачей значения перечисления в запрос по параметру. Или это абсолютно одинаковые вещи?
 
 Партнерская программа EFSOL Oblako
   Ненавижу 1С
 
1 - 03.06.21 - 17:49
Значение это не функция, а способ получения константы, как и ДатаВремя
   Начинающий одинэсник
 
2 - 03.06.21 - 17:51
(1) Ок.
Обращение к этой константе происходит N раз в первом случае и 1 раз во втором, верно?
   ДенисЧ
 
3 - 03.06.21 - 17:55
(2) Можно посмотреть запрос, который идёт к серверу
   Mikeware
 
4 - 03.06.21 - 17:57
(2) скорее, на этапе построения плана запроса.
ведь насколько я понимаю, аргумент Значения() - константа?
или я хреново понимаю?
   youalex
 
5 - 03.06.21 - 18:00
Скорее всего параметром втыкается в текст запроса скуля.
Точно не рассчитывается для каждой строчки таблицы)

Вопрос, каким образом кэшируется(если кэшируется), и получается ли повторно, если дважды используется в тексте запроса 1С
   fisher
 
6 - 03.06.21 - 18:03
(2) Скорее всего предопределенные кэшируются и при трансляции запроса подставляется готовый литерал. То есть вообще ни одного запроса не будет.
   Начинающий одинэсник
 
7 - 03.06.21 - 18:10
Сколько людей столько и мнений)

Почему корпорация 1С не документирует такие вещи? или не там ищу?
   VS-1976
 
8 - 03.06.21 - 18:12
(0) В данном случае константа будет передан на в запрос в виде значения
   ДенисЧ
 
9 - 03.06.21 - 18:16
(7) А зачем? Может, ты ещё захочешь руками индексы создавать? И план запроса прямо в языке 1с получать?
   ДенисЧ
 
10 - 03.06.21 - 18:16
А потом ещё update и delete в языке запросов потребуешь....
   ДенисЧ
 
11 - 03.06.21 - 18:16
Довольно того, что есть надежда, что ЗНАЧЕНИЕ() не вычисляется 100500 раз.
   ildary
 
12 - 03.06.21 - 19:38
(9) похвально задавать подобные вопросы, лишь бы топикстартер не разочароваться со временем от большого количества "потому что гладиолус".
   Ненавижу 1С
 
13 - 03.06.21 - 23:44
Варианта два, либо передается как параметр, либо непосредственно в тексте запроса прописана константа, все остальное не логично
   DimVad
 
14 - 04.06.21 - 06:19
Как бы 1С рекомендует пользоваться значениями. Что было бы очень странно если это соединение :)
   DrZombi
 
15 - 04.06.21 - 06:59
(0) Это кому как нравится, я вот предпочитаю писать через значения, там где можно, не заморачиваться с лишними параметрами :)
   DrZombi
 
16 - 04.06.21 - 07:00
(2) Нет, но вы можете поспорить :)
   DrZombi
 
17 - 04.06.21 - 07:03
(7) перечисление уже константа, его не меняют каждую секунду.
   МимохожийОднако
 
18 - 04.06.21 - 07:06
(0) Я за первый вариант. Пора делать голосовалку )
   Мультук
 
19 - 04.06.21 - 07:32
(0) Говорят, что в нормальных консолях есть возможность увидеть, а затем и посмотреть глазами план запроса.

P.S.
Врут, поди (с)
   DrZombi
 
20 - 04.06.21 - 07:50
(19) Нет, не врут, SQL могет, а еще SQL может делать такие связки запросов, что 1С курит в сторонке.
И что бы это сделать в 1С, надо написать еще парочку десятку строчек и замедлить запрос до максимума :)
   Жан Пердежон
 
21 - 04.06.21 - 09:18
(0) (2) >> будет ли для каждой строки таблицы ЗаказКлиента происходить запрос к перечислению
давно б уже sql-запросы глянул и увидел, что они одинаковые
   aka MIK
 
22 - 04.06.21 - 09:40
(20) SQL не делает связки запросов, их делает сервер 1С

SQL может неправильно выбрать план запроса, это да, конечно если запрос написан так, что допускает разные толкования
   eTmy
 
23 - 04.06.21 - 09:44
Открыть профайлер видимо уже совсем лень
   СвинТуз
 
24 - 04.06.21 - 09:47
Белоусов говорит все это фантики.
Разницы нет.

План запроса к скл базе будет один и тот же.

Вопрос только предпочтений и длинны написанного кода.
   Hans
 
25 - 04.06.21 - 10:00
Белоусов устарел. Все что можно - через значения.
   СвинТуз
 
26 - 04.06.21 - 10:01
(25)
не без этого.
   Ненавижу 1С
 
27 - 04.06.21 - 10:10
константы безусловно быстрее компилируют/подготавливают запрос к выполнению чем параметры
параметры более универсальны, можно разные параметры вставлять в экземпляр запроса

насколько это критично - вопрос холливарный


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