|
Когда построитель отчета/запроса фактически выполняет запрос? | ☑ | ||
---|---|---|---|---|
0
Asmody
31.01.22
✎
16:51
|
В СП написано:
ПостроительОтчета (ReportBuilder) Выполнить (Execute) Синтаксис: Выполнить() Описание: Выполняет запрос, построенный для отчета казалось бы, однако дальше написано: Примечание: Выставляет внутренний флаг необходимости перевыполнения запроса при выводе отчета (метод Вывести) и получении результата запроса. т.е. по факту Выполнить() ничего не выполняет. Что, в общем-то, подтверждают замеры. Внимание, вопрос - это оно давно так? |
|||
1
Ненавижу 1С
гуру
31.01.22
✎
17:08
|
Надо этот тип пометить как obsolete/deprecated
|
|||
2
Casey1984
31.01.22
✎
17:09
|
(0) А если к полю Результат обратиться, выполняется запрос?
|
|||
3
Casey1984
31.01.22
✎
17:10
|
(2) А вот наверное ответ: "и получении результата запроса"
|
|||
4
ale-sarin
31.01.22
✎
17:15
|
Давно. По мне, так всегда было. Запрос к БД выполняется не при Выполнить(), а при обращении к результату.
Результат = Построитель.Выполнить(); // Запрос не выполняется ТЗ = Результат.Выгрузить(); // Вот тут и будет выполнен запрос. |
|||
5
ale-sarin
31.01.22
✎
17:16
|
В первый раз, конечно, тоже было неожиданно, надо признаться.
|
|||
6
Casey1984
31.01.22
✎
17:17
|
(0) Судя по посту https://forum.infostart.ru/forum9/topic53309/ давно/всегда :-)
|
|||
7
ale-sarin
31.01.22
✎
17:19
|
Опечатка у меня.
Построитель.Выполнить() и Построитель.Результат.Выгрузить() |
|||
8
VS-1976
31.01.22
✎
18:27
|
(0) Ну как же не выполняет, а кто будет преобразовывать текст в текст запроса для объекта запрос? Просто второй раз не просит уже
|
|||
9
acht
31.01.22
✎
20:15
|
(8) "преобразовывать текст в текст запроса для объекта запрос" и обращаться к информационной базе - сильно разные вещи.
|
|||
10
VS-1976
31.01.22
✎
20:51
|
(9) ну так это же не .Выбрать(), а всего лишь .Выполнить()
|
|||
11
ДедМорроз
31.01.22
✎
22:29
|
Как бы,во взрослом sql есть отдельно prepare,когда формируется план запроса и execute,когда запрос выполняется.
Так что ничего удивительного. |
|||
12
pechkin
31.01.22
✎
22:31
|
Интересно какой смысл в такой "оптимизации".
В каком сценарии нужно построитель выполнить, но ничего не получать? |
|||
13
Asmody
31.01.22
✎
23:09
|
(12) давеча наткнулся на кусок 💩🐘 (или, как его называют, "легаси-кода"), где было получение результата построителя без Выполнить().
Вот тут меня сомнения накрыли. |
|||
14
pechkin
31.01.22
✎
23:18
|
А у построителя запроса аналогично?
|
|||
15
ale-sarin
01.02.22
✎
09:55
|
(14) Да
|
|||
16
fisher
01.02.22
✎
12:47
|
Прикольно. Любопытный пример плохого дизайна.
|
|||
17
Asmody
02.02.22
✎
21:10
|
Сегодня нарвался на ещё один эффект: если тот самый построитель с тяжелым запросом открыть в отладчике до установки всяких отборов, то можно получить неслабую висюльку "на двоих".
Слушай, обидно, ничего не сделал, только вошёл https://www.youtube.com/watch?v=ksRVC_UAYyA |
|||
18
mistеr
02.02.22
✎
21:38
|
(16) Или плохой документации, как посмотреть.
|
|||
19
sitex
naïve
02.02.22
✎
21:53
|
(0) Если база SQL то включаем Profiler и анализируем
|
|||
20
TormozIT
гуру
03.02.22
✎
00:45
|
(17) 10 лет назад я пожаловался на эту особенность в 1С. Но исправлять не стали. https://partners.v8.1c.ru/forum/topic/1039031
|
|||
21
TormozIT
гуру
03.02.22
✎
00:50
|
(20)+ Забавный факт. Через 2 года переписки по этой проблеме я получил ответ "интересующая Вас ошибка еще готовится к публикации в системе". До сих пор видимо "публикуют".
|
|||
22
fisher
03.02.22
✎
10:22
|
(18) Если метод Выполнить() ничего не выполняет и не потому что кэш, а потому что выполнение будет в другом месте - это плохой дизайн API.
Во-первых, метод нужно было назвать иначе ибо его название вводит в заблуждение. Во-вторых, даже с учетом документации нифига неочевидно, зачем он нужен и как его правильно применять. |
|||
23
Asmody
03.02.22
✎
11:50
|
(21) Понятно, что они давно забили на построители, ибо мейнстрим - это СКД. А проблемы индейцев шерифа, как известно, не пенетрируют.
|
|||
24
TormozIT
гуру
04.02.22
✎
12:12
|
Сегодня мне сообщили из 1С, что баг (20) 20003151 исправлен в 8.3.5
|
|||
25
Курцвейл
04.02.22
✎
12:24
|
если бы писали приложение на java или иных ООП языках, то было понятнее почему и зачем так сделано.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |