|
Долго передает табличный документ с сервера на клиент | ☑ | ||
---|---|---|---|---|
0
Impuls20_03
11.11.20
✎
09:30
|
Доброго дня. Ситуация следующая. Есть довольно сложный печатный документ. Общий объем около 400 страниц. Формируется довольно быстро, а вот передача табличного документа с сервера на клиент занимает порядка 40 секунд времени. И это на мощном железе в пределах одного ПК. Пробовал на версии 8.3.13.1644 и 8.3.16.1224. Время не изменяется. Подскажите в какую сторону можно копнуть чтобы ускорить передачу?
|
|||
1
Impuls20_03
11.11.20
✎
09:42
|
Пробовал ПоместитьВоВременноеХранилище ПолучитьИзВременногоХранилища. Стало получше, но все равно довольно долго
|
|||
2
Kassern
11.11.20
✎
09:55
|
(1) А передается по локалке, или через интернет?
|
|||
3
Impuls20_03
11.11.20
✎
10:07
|
(2) Вообще по локалке. Но я пробую на своем компе. На нем стоит сервер 1c + MSSQL. Так что оно даже в локалку не выходит. Так чисто через стек прогоняется. MXL весит всего 9 Мб
|
|||
4
alkorolev
11.11.20
✎
10:15
|
(0) в расшифровке много данных лежит? на клиенте отображается сформированный табДок? Все 400 страниц?
|
|||
5
timurhv
11.11.20
✎
10:16
|
(3) Следите за объемом ОЗУ.
|
|||
6
Kassern
11.11.20
✎
10:21
|
(3) А дальше что с файлом делаешь, когда из временного хранилища на клиенте получаешь двоичные данные?
|
|||
7
Fedor-1971
11.11.20
✎
10:43
|
(0) Есть форма, на ней лежит поле с типом ТабличныйДокумент,
бежим на сервер, формируем печ.форму и заполняем данное поле. Правильно понял? Либо нажимаем некую кнопку и после формирования табДок.Показать() Хоть схематично код покажи. |
|||
8
Impuls20_03
11.11.20
✎
11:15
|
(7) Упростил до самого простого варианта. Нажимаем кнопку, бежим на сервер заполняем ТабДок, передаем его на клиент, на клиенте ТабДок.Показать(). Сам код заполнения ТабДок - около 8 секунд, далее после Возврат ТабДок; 40 секунд курим, после ТабДок.Показать() - 2 секунды и документ сформирован.
ОЗУ на компе 32 ГБ. Проц i5. На клиенте все 400 страниц махом показываем. |
|||
9
Kassern
11.11.20
✎
11:28
|
(8) Если табдок вынести на форму и ничего не возвращать на клиент? ТабДок.Показать() уже юзать не нужно будет
|
|||
10
polosov
11.11.20
✎
11:30
|
(8) Наверное валидатор XML при передаче данных с сервера на клиент тупит.
|
|||
11
timurhv
11.11.20
✎
11:34
|
Это проблема работы 1С с большими объемами, даже с абсолютно пустым табличным документом (проверял на 8.2 - тоже самое).
Замеры формирования табличного документа с выводом пустых областей и получением на клиенте: 40000 областей: 751 сек, ОЗУ 4850Мб rphost + столько же на клиенте 1cv8c.exe = 9700МБ 4000 областей: 76 сек, ОЗУ 630Мб rphost + примерно столько же 1cv8c.exe (не так заметно как выше) 400 областей: 7 сек, ОЗУ 320Мб rphost 90% времени занимает строчка на клиенте: ТабДок = ПолучитьИзВременногоХранилища(АдресТабДок); Как вариант на сервере получать двоичные данные и их передавать, на клиенте открывать. |
|||
12
Rovan
гуру
11.11.20
✎
11:43
|
а такой вариант, что передать на клиент сами даннные и уже там заболнить ТабДок ?
|
|||
13
Impuls20_03
11.11.20
✎
11:48
|
(12) Чет мне кажется что это будет не быстро все равно.
|
|||
14
alkorolev
11.11.20
✎
12:43
|
(12) все основные методы работы с ТабДоком на клиенте не работают
|
|||
15
acht
11.11.20
✎
12:49
|
(8) Сделай через контекстный серверный вызов, чтобы документ был реквизитом формы и прихал на клиента вместе с формой.
|
|||
16
Kassern
11.11.20
✎
12:56
|
(15) я ж об этом написал (9) видимо ТС это не устраивает
|
|||
17
acht
11.11.20
✎
12:59
|
(16) Скорей всего ТС даже не пробовал.
Там его даже выносить на форму не надо, а просто реквизит формы сделать и заполнить, чтобы он с контекстом приехал, а не вручную через временной хранилизе и тыпы. |
|||
18
timurhv
11.11.20
✎
13:25
|
(17) Так конечно быстро работает, по 40000 из (11) отработалось за 34 сек. Но и памяти rphost сожрал 14265 МБ
|
|||
19
MyNick
11.11.20
✎
13:32
|
А если через хранилище значения его сжать, а на клиенте распаковать?
|
|||
20
Kassern
11.11.20
✎
14:11
|
(18) сейчас потестил табдок на 400тыс строк у себя, если просто сформировать на клиенте, заполнить функцией на сервере, вернуть табдок на клиент и показать, то у меня заняло 71сек. Если же на сервере этот же ТабДок записать в ексель, а на клиенте ЗапуститьПриложение(файл экселя) то все это телодвижение занимает 23сек)))
П.С. если без изврата сделать как я написал в (9) то на форме данный табдок выводится за 3.8сек все 400тыс строк... |
|||
21
Вафель
11.11.20
✎
14:16
|
так не передавай на клиент - оставляй на сервере.
1с сама умеет порциями с сервера получать |
|||
22
RomanYS
11.11.20
✎
14:18
|
(20) >> то на форме данный табдок выводится за 3.8сек все 400тыс строк...
Не все, а только видимую часть. Табдоки в УФ вроде кешируются и динамически подгружаются частями. А вопрос зачем ТСу ТД с 400к строк уже задавали? |
|||
23
Kassern
11.11.20
✎
14:21
|
(21) ТСу нужно 400 страниц показать, насколько я понял, а про 400тыс строк - писал timurhv (11)
|
|||
24
VladZ
11.11.20
✎
14:26
|
(0) "Общий объем около 400 страниц." - что это? Оперативный отчет?
Кому нужен отчет в 400 страниц? |
|||
25
Rovan
гуру
11.11.20
✎
15:45
|
(+24) видимо какая-то гос. контора.... очень любят они всё печатать и складывать в архив ! :-)
|
|||
26
Kassern
11.11.20
✎
15:51
|
(25) Для этого не обязательно показывать табдок. Сохраняй его сразу куда надо, или печатай
|
|||
27
VladZ
11.11.20
✎
15:53
|
+26 Или так:
- сформировать на сервере - отправить по почте нужным получателям. |
|||
28
Impuls20_03
11.11.20
✎
16:04
|
(16) Нет. Просто это не работает. Я такое делал изначально
|
|||
29
Kassern
11.11.20
✎
16:06
|
(28) какая ошибка?
|
|||
30
Impuls20_03
12.11.20
✎
07:59
|
(29) Ошибок нету, просто долго формируется
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |