Имя: Пароль:
1C
1С v8
ПостроительОтчета.Вывести(ДокументРезультат);
0 Cumpuciy
 
15.10.13
11:54
Аномально долго выполняется этот фрагмент кода.
Отчет стандартный, остатки и обороты, ведомость по партиям в торговле 10.2.
С сегодняшнего утра такое.
В коде со вчера ничего не меняли.
Сам построитель.текст в консоли запросов выполняется нормально и быстро, с теми же параметрами.
Кто-нибудь сталкивался?
Спасибо.
1 Cumpuciy
 
15.10.13
12:14
выдернул через ЦУП текст SQL запроса.
2 Aletar
 
21.10.13
07:56
Так вывести это же после запроса к базе, насколько мне известно, запрос к базе в ПостроительОтчета.Выполнить(). Как тут поможет текст SQL запроса? Проблему решили в итоге?
3 Лефмихалыч
 
21.10.13
08:00
(0) итоги когда в последний рассчитывали?
4 Defender aka LINN
 
21.10.13
08:12
(2) Выполнить() у ПостроителяОтчетов не делает никаких запросов, есличо.
5 ДенисЧ
 
21.10.13
08:13
(4) выполнить() или вывести() ?
Оба выполняют при кривом запросе....
6 Defender aka LINN
 
21.10.13
08:17
(5) Как ни ВНЕЗАПНО, но Выполнить():

ПостроительОтчета (ReportBuilder)
Выполнить (Execute)
Синтаксис:

Выполнить()
Описание:

Выполняет запрос, построенный для отчета.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Выставляет внутренний флаг необходимости перевыполнения запроса при выводе отчета (метод Вывести) и получении результата запроса.

СП барыжишь, а сам почто не читаешь?
7 ДенисЧ
 
21.10.13
08:18
(6) внезапно - если в запросе в таблицу выводится ссылка, то идёт запрос в базу за его представлением....
8 Defender aka LINN
 
21.10.13
08:19
(7) Я в курсе, спасибо :)
9 ДенисЧ
 
21.10.13
08:20
(8) кушайте, не обляпайтесь.
10 Defender aka LINN
 
21.10.13
08:25
(9) Но Выполнить() по-прежнему запрос не выполняет, я настаиваю
11 Aletar
 
21.10.13
12:12
Ага, признаю, я ошибся. Действительно Выполнить() не выполняет запрос к базе. Кроме случая в (7) .

А что такое запрос построенный для отчета?
12 Aletar
 
21.10.13
12:24
Т.е. получается что запрос построенный для отчета - это уже итоговый запрос с учетом всех наших отборов, группировок, доп. полей и прочее. Если это так, тогда вопрос, что значит в описании к Выполнить() - Выполняет запрос, или надо обращать внимание только на примечание в описании?
13 Defender aka LINN
 
21.10.13
13:31
(12) Примечание смотри. Сам запрос выполняется при выводе или обращению к свойству "Результат"
14 Aletar
 
21.10.13
14:02
(13) Спасибо.
15 Cumpuciy
 
21.10.13
14:10
Привет! я уж думал тема ушла вниз.
В консоли запрос выполнялся быстро, потому что не было группировок. Поставил группировки - стал тормозить.
У нас есть старый SQL сервер, 32 битный.
Развернул бэкап базы(выгрузка из конфигуратора) на него, т.е. тот же сервер 1с, но другой сервер SQL, - запрос выполняется быстро. хм.
Создал новую базу, уже на новом SQL, загруил бэкап - запрос выполняется долго.
тестирование исправление - реструктуризация таблиц, реиндексация, пересчет итогов - результата нет.

я через SQL Managment studio вытащил планы выполнения запроса в на обоих серверах.
На SQL1 где тормозит - 99% времени уходит на "вложенные циклы". левое внешнее соединение.
На SQL2 где не тормозит - 98% на сортировку, ну и план запроса отличается.
Текст запроса один и тот же в обоих случаях. Базы 1С идентичны, из одного бэкапа.
Сломал уже всю голову.
Самое забавное, что если в запросе - в выводимое поле добавить ТаблицаРегистра.Заказ, то запрос не тормозит.
Facepalm
16 Cumpuciy
 
22.10.13
13:18
собственно, в плане выполнения очень смущает этот фрагмент:
http://leprastuff.ru/data/img/20131022/975cbf9eeb6ccc297d74d19abe454345.JPG
создается виртуальная таблица с курсами валют, а потом вложенный цикл(левое внешнее соединение) с ранееполученными данными, что весит просто кучу времени. 99% времени выполнения запроса.
на старом SQL
http://leprastuff.ru/data/img/20131022/c3d49c5f1df44793f82c408ca541a03b.JPG
никакой буферизации таблицы не происходит и он нормально правым внешним соединением добавляет к ранее полученным данным курс валюты.
текст запроса одинаков. план выполнения разный.
может быть кто-то сталкивался с этим?
17 Cumpuciy
 
22.10.13
13:24
почему не правое внешнее соединение, а левое!
18 Defender aka LINN
 
22.10.13
13:39
индексы/статистику обновлял?
19 Cumpuciy
 
22.10.13
13:43
(18) да, обновлял, перестраивал.
толку никакого.
из значимых событий, совпавших с началом этой бороды - развернули на сервере базы sharepoint и ms project.
но на нагрузке это не сказалось. только права админа были даны ученой записи с которой они работают.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший