Имя: Пароль:
1C
1С v8
Тормоза на строке РезультатПостроителя = ПостроительОтчета.Результат;
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. Пробовал запускать запрос у них в консоли отчетов. Работало все нормально. Уже не знаю куда залезть…