|
Тормоза таблицы на форме | ☑ | ||
---|---|---|---|---|
0
wuff
31.07.23
✎
15:53
|
Здравствуйте.
Платформа 8.3.20, УФ. Есть таблица на форме, колонок 10-15, строк 10-15 тысяч. Сам отчет формируется довольно долго. Но проблема даже не в этом. Когда становишься на строку и жмакаешь "End" все замирает на минут 5-7, иногда 10, и только тогда просходит отрисовка и курсор отображает в конце таблицы. Подскажите с как можно, и можно-ли вообще что-то сделать для ускорения процесса работы с таблицей? |
|||
1
rphosts
31.07.23
✎
15:54
|
Ссылочные типы выводишь ведь?
|
|||
2
wuff
31.07.23
✎
15:57
|
Не только.
|
|||
3
Fragster
гуру
31.07.23
✎
15:57
|
если включить показатели производительности, то видно, что оно всю таблицу маленькими кусочками на клиент передает. Решением может быть формирование отчета неконтекстным серверным вызовом с возвратом табдока.
|
|||
4
АгентБезопасной Нацио
31.07.23
✎
15:58
|
(0) ежели не секрет, а что вы делаете с 200 000 значений? На для ускорения можно "таблицу" выводить динамческим списком...
|
|||
5
АгентБезопасной Нацио
31.07.23
✎
15:59
|
(3) а у него табдок или таблица?
|
|||
6
Fragster
гуру
31.07.23
✎
16:00
|
если таблица, то решение примерно то же самое
|
|||
7
wuff
31.07.23
✎
16:00
|
(3) Таблица формы.
|
|||
8
Fragster
гуру
31.07.23
✎
16:02
|
вот описание эффекта https://infostart.ru/1c/tools/504141/
|
|||
9
wuff
31.07.23
✎
16:03
|
(8) не, все делается в контексте.
|
|||
10
Fragster
гуру
31.07.23
✎
16:04
|
(9) "Естественно, никого обмануть не получится, и, например, при печати или поиске документ так или иначе будет получен на клиенте."
|
|||
11
Fragster
гуру
31.07.23
✎
16:11
|
при этом в зависимости от характеристик сети (в основном латентность) возврат из неконтекстного вызова может быть сильно быстрее получения по кускам в случае работы с контекстом.
|
|||
12
wuff
31.07.23
✎
16:14
|
Да, блин, все формируется на сервере и заполняется таблица соответственно там. Значит все таблица уже на клиенте. И тут начинаются тормоза.
|
|||
13
wuff
31.07.23
✎
16:21
|
Отрисовалась таблица. Ставлю курсор на вторую строку таблицы - и все 1с уходит в коматоз.
|
|||
14
wuff
31.07.23
✎
16:23
|
Процесс на клиенте "Не отвечает". На сервере 1c особо никаких экстремумов не наблюдается. Сетка между СУБД и 1с сервером 10Gb.
|
|||
15
wuff
31.07.23
✎
16:24
|
Между клиентом и сервером 1с тоже 10Gb.
|
|||
16
Fragster
гуру
31.07.23
✎
16:28
|
(12) нет. замени серверный вызов с контектом на неконтекстный с возвратом твоей таблицы. он будет дольше (возможно, в разы), но при перемотке таблица тормозить не будет.
|
|||
17
wuff
31.07.23
✎
16:30
|
(16) Да, это не моя таблица... Там отчет, звездец...
|
|||
18
wuff
31.07.23
✎
16:31
|
(16) Ну думаю что дело именно в передаче всей таблицы... Хрен с ней, сформировалась она, а дальше с ней практически невозможно работать как в (13)
|
|||
19
wuff
31.07.23
✎
16:32
|
(18) *Ну думаю = Не думаю.
|
|||
20
novichok79
31.07.23
✎
16:36
|
в 2018м занимался чем-то подобным. удалось довольно неплохо оптимизировать 1Сину.
а ТЖ смотрели? может быть там есть что-то? и что там с ссылочными типами в колонках? ну и накряйняк - обычный выход в таких ситуациях - пагинация, то есть уменьшать количество данных, которые необходимо обрабатывать серверу и держать в памяти клиенту. |
|||
21
dmt
31.07.23
✎
16:36
|
(18) все правильно тебе говорят, попробуй на клиенте запусти после заполнения
Для каждого Строка из МояТаблица Цикл КонецЦикла; в этот момент вся таблица будет получена на клиент, при этом потормозит - зато потом будет летать |
|||
22
Fragster
гуру
31.07.23
✎
16:36
|
(18) ну включи показатели производительности и смотри на счетчики количества вызовов и объема переданных данных
|
|||
23
Fragster
гуру
31.07.23
✎
16:38
|
(21) вроде бы этот способ по времени просто перенесет тормоза непосредственно в точку формирования отчета. Неконтекстный же вызов будет сильно быстрее, так как это будет одно взаимодействие с сервером. Надо счетчики смотреть.
|
|||
24
wuff
31.07.23
✎
16:45
|
Сделать неконтекстный вызов не получится. Надо будет переписывать все, а это нереально...
|
|||
25
Fragster
гуру
31.07.23
✎
17:31
|
(24) думаю, что далеко не всё. ну, конечно, если твой выбор - страдать, тогда да. ну можешь еще костыль из (21) вставить, чисто чтобы убедиться, что причина в этом, но это приведет к тому, что просто дольше всё будет формироваться.
еще тебе лайфхак - пихать данные не в реквизит формы, а просто в переменную, её во временное хранилище, а по возвращению на клиента - из этого временного хранилища доставать в реквизит. ну и дополнительно перед вызовом твоего мега отчета реквизит формы неплохо бы очищать. |
|||
26
Мимохожий Однако
01.08.23
✎
07:13
|
Выведи отчет не на форму,а в табличный документ. Добавь расшифровку
|
|||
27
yopQua
01.08.23
✎
10:25
|
(26) да большой табдок тоже медленно работает
|
|||
28
mistеr
01.08.23
✎
11:33
|
(0) Можно. Дать пользователю сразу те 2-3 цифры, ради которых формируется эта 15-тысячная простыня.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |