Имя: Пароль:
1C
1С v8
Скорость вывода СКД
,
0 inval1d
 
24.06.18
17:18
Добрый день. От чего зависит скорость формирования ответа на СКД? Как можно оптимизировать формирования ответа. Есть ответ, источник данных объект - таблица сформированная программно. Отчёт выводится достаточно долго, в качестве эксперимента создал регистр сведений, засунул туда эту таблицу,переписал отчёт - он стал формироваться значительно быстрее. С чем это связано, как оптимизировать отчёт? Подозреваю представление, но как его использовать не пойму.
1 hawksib
 
24.06.18
18:19
а как таблицу получаете программно? думаю таблица долго формируется
2 inval1d
 
24.06.18
18:32
выводится дольше чем формируется, хотя и формируется не быстро - секунд 10
3 inval1d
 
24.06.18
18:37
при формировании печатных форм, нужно вытаскивать в запрос представление, чтобы не получать запрос в цикле. Когда отчет на СКД, на сколько я понимаю, этого можно не делать, СКД сообразит, а когда в качестве источника объект, как будет с представлением?
4 МихаилМ
 
24.06.18
19:37
медленность скд -  известная проблема.
при получении данных для тз, 1с сразу делает запрос для расшифровки ссылок и их кэширует.
5 МихаилМ
 
24.06.18
19:38
+(4) 1с83 . в 82 так не делается.
6 inval1d
 
24.06.18
19:45
(5) а как это решить как раз в 8.2?
7 inval1d
 
24.06.18
19:51
(4) у меня в обоих случаях СКД, интересует с чем связана скорость при работе с регистром, индексов не добавлял, прирост скорости вывода отчета в 2 раза, записать таблицу в регистр, тоже быстро
8 Мимохожий Однако
 
24.06.18
19:52
(0) Делал замеры?
(6) 8.3 не используешь из религиозных соображений?
9 inval1d
 
24.06.18
19:59
замеров я не делал, но отчет выводится достаточно долго и это заметно на глаз. Я ограничился вставками сообщить(ТекщаяДата()). Таблица формируется порядка 10 секунд, выводится секунд 40. Если записать её в регистр, запись 1-2 секунды, а вывод 20 секунд. Это на 8.3 просто на работе стоит 8.2, я разницы не увидел.
10 Мимохожий Однако
 
24.06.18
20:03
Замер позволит определить на каких строках теряется время. Когда определишься с проблемными строками, проанализируй тормоза и оптимизируй код, запрос и т.п.
11 inval1d
 
24.06.18
20:09
(10) какой замер? СКД - СкомпоноватьРезультат() какие там строки, Вы о чем??
12 Мимохожий Однако
 
24.06.18
20:52
(11) Начни с отладки текста запроса. Если не хочешь-тебя никто не заставит.
13 inval1d
 
24.06.18
21:22
(12) при чем тут запрос? Вы ведь вообще не в курсе о чем я говорю, верно?
14 hhhh
 
24.06.18
23:17
(13) ну разные запросы дают разницу в тысячу раз. Поэтому если у тебя сам запросм гомнокодистый, то дальнейшие философские раасуждения некуместны. Как можно там что-то оптимизировать.
15 inval1d
 
25.06.18
03:48
ещё раз - запрос всегда один, в первом случае СКД использует в качестве источника данных объект, куда я передаю таблицу полученную эти запросом, во втором случае я эту таблицу записываю в регистр, и в СКД в качестве источника указан регистр. ВЫВОД отчета (тот которым занимается СКД, когда в панели состояния прогрессбар рисуется) во втором случае быстрее в 2 раза.
16 inval1d
 
25.06.18
03:51
...во втором случае даже ещё один запрос добавляется, для выбора из регистра всех заисей
17 hhhh
 
25.06.18
04:01
(15) ну проиндексировать таблицу позабыл. А в регистре всё проиндексировано.
18 inval1d
 
25.06.18
05:40
(17) вообще я и сам думаю в сторону индексов
19 АНДР
 
25.06.18
06:32
(17), (18) Поясните,как индексирование результата запроса влияет на его отображение!? Автор утверждает, что скорость выполнения самого запроса не меняется, верно?

(0) Огласите структуру регистра и результата запроса.
20 inval1d
 
25.06.18
06:37
(19) Автор пытается разобраться, что влияет на скорость вывода отчета. А индексирование я только подозреваю, и не результата запроса а регистра.
21 АНДР
 
25.06.18
06:40
(20) из (17) следует, что влияет индексирование именно выводимого результата, а не первоначального источника
22 Мимохожий Однако
 
25.06.18
06:41
Есть ещё такое средство как технологический журнал. Но его не все умеют анализировать. В данном случае, есть сомнения.
23 inval1d
 
25.06.18
06:46
(21) да, сейчас я именно это пытаюсь проверить
24 inval1d
 
25.06.18
08:22
проверил:
Заполнение таблицы: 25.06.2018 10:16:19
СкомпоноватьРезультат: 25.06.2018 10:16:46
Индексируем таблицу...
Готово: 25.06.2018 10:17:30
------------------------------------
Заполнение таблицы: 25.06.2018 10:17:46
СкомпоноватьРезультат: 25.06.2018 10:18:11
Готово: 25.06.2018 10:18:53

в первом случае добавляю в таблицу индексы по тем полям которые в являются измерениями.
Выходит что не в этом дело, нет разницы
25 АНДР
 
25.06.18
08:31
Тип полей промежуточного регистра - примитивный?
26 inval1d
 
25.06.18
08:35
таблица большая - 23 поля, в регистре 8 измерений, 9 ресурсов и 6 реквизитов, индексов в регистре не создавал, предполагаю, что индексы только по измерениям, поэтому при создании индексов в таблицу добавляю индексы по тем полям, по которые в регистре как измерения

типы полей различные, ресурсы - числовые, измерения ссылочные, реквизиты, как правило строки
27 inval1d
 
25.06.18
08:37
...соврал, не все измерения ссылочные, есть числовые
28 xXeNoNx
 
25.06.18
16:18
Мля, сколько телепатов. Оптимизирую по хз-тз дорого.
(15) "...запрос всегда один.." - какие ваши доказательства?
29 xXeNoNx
 
25.06.18
16:22
говнокод детектед, ТСу ссыкотно даже скинуть его
30 inval1d
 
26.06.18
09:32
(28) доказательства чего? Зачем текст запроса? Вы понимаете о чем я спрашиваю?
Ещё раз: запросами, циклами ещё как-то у меня формируется таблица, отчет на скд, эту таблицу использую в качестве источника данных. Получаю одну скорость вывода отчета.
Создал регистр сведений, записываю эту таблицу в регистр, Отчет к этому регистру на СКД. Там конечно добавляется запрос(выбрать *) Вопрос в том что во втором случае отчет выводится гораздо быстрее.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан