|
Тормоза на строке РезультатПостроителя = ПостроительОтчета.Результат; | ☑ | ||
---|---|---|---|---|
0
mixqn
02.08.11
✎
13:21
|
Коллеги!
Какая может быть причина жутких тормозов на строке кода РезультатПостроителя = ПостроительОтчета.Результат; Запрос по идее к этому моменту выполнен. В результате запроса всего порядка 10-20 строк, реже до 30. Тем не менее, на этой строке тратится порядка 80% времени по замеру производительности или (ВНИМАНИЕ!!!) порядка 450-500 секунд!!!! В чем может быть причина и как можно побороться с проблемой? Заранее спасибо всем кто откликнется! |
|||
1
Scooter
02.08.11
✎
13:28
|
РезультатПостроителя = ПостроительОтчета.Результат;
ЕМНИП как раз происходит выполнение запроса |
|||
2
mixqn
02.08.11
✎
13:32
|
Тогда что же происходит по строке
ПостроительОтчета.Выполнить(); |
|||
3
Михаил Козлов
02.08.11
✎
13:57
|
(2) Насколько я понимаю:
- Выполнить() - принудительное выполнение запроса; - Результат - получение результата, без, ВОЗМОЖНО, выполнения запроса (если в построителе не изменилось то, что влияет на результат запроса). |
|||
4
mixqn
02.08.11
✎
15:12
|
По синтаксис-помощнику:
ПостроительОтчета (ReportBuilder) Результат (Result) Использование: Только чтение. Описание: Тип: РезультатЗапроса. Результат выполнения запроса для формирования отчета. Я лично всегда считал, что запрос выполняется методом Выполнить() и в свойство Результат попадает результат запроса (уже выполненного). Сейчас код у меня написан вот так: ПостроительОтчета.Выполнить(); РезультатПостроителя = ПостроительОтчета.Результат; ВыборкаДанных = РезультатПостроителя.Выбрать(); Было ПостроительОтчета.Выполнить(); ВыборкаДанных = ПостроительОтчета.Результат.Выбрать(); Разницы никакой и в том и в другом случае тормоза на строе после «ПостроительОтчета.Выполнить();» |
|||
5
mixqn
02.08.11
✎
15:16
|
Попробую сделать вот так:
Запрос = ПостроительОтчета.ПолучитьЗапрос(); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДанных = РезультатЗапроса.Выбрать(); Вдруг поможет... |
|||
6
Fragster
гуру
02.08.11
✎
15:18
|
(0) дело в запросе, инфа 100%
|
|||
7
mixqn
02.08.11
✎
15:24
|
(6) Попробую еще раз покопать в этом направлении, но вообще, запрос проверялся и отлаживался, точно уже не помню время выполнения, но точно в пределах 30 секунд, тут же зависание на порядок дольше.
|
|||
8
Defender aka LINN
02.08.11
✎
15:26
|
(3) Неправильно. Выполнить() взводит у него внутри флаг. А когда идет обращение к Результату, то если флаг взведен, то происходит выполнение запроса.
|
|||
9
Fragster
гуру
02.08.11
✎
15:32
|
(7) если в выводимых полях или отборе есть обращение через ".", то все магическим образом может меняться
|
|||
10
mixqn
02.08.11
✎
16:03
|
Беда еще и в том, что иногда все работает легко и быстро, а иногда виснет. Зависимости выявить пока не удалось. Единственные сомнения – RLS. У меня с полными правами и весь запрос полностью (порядка 3-х тыс. строк в результате) и запрос с отборами (порядка 20 строк в результате) выполняются в приемлемое время. Без отборов в пределах 30 секунд, с отборами буквально 2-3, максимум, 5 секунд. Проблема начинается у пользователей с ограниченными правами. Данные выбираются из таблиц, где настроена RLS. Пробовал запускать запрос у них в консоли отчетов. Работало все нормально. Уже не знаю куда залезть…
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |