Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Долго передает табличный документ с сервера на клиент

Долго передает табличный документ с сервера на клиент
Я
   Impuls20_03
 
11.11.20 - 09:30
Доброго дня. Ситуация следующая. Есть довольно сложный печатный документ. Общий объем около 400 страниц. Формируется довольно быстро, а вот передача табличного документа с сервера на клиент занимает порядка 40 секунд времени. И это на мощном железе в пределах одного ПК. Пробовал на версии 8.3.13.1644 и 8.3.16.1224. Время не изменяется. Подскажите в какую сторону можно копнуть чтобы ускорить передачу?
   Impuls20_03
 
1 - 11.11.20 - 09:42
Пробовал ПоместитьВоВременноеХранилище ПолучитьИзВременногоХранилища. Стало получше, но все равно довольно долго
   Kassern
 
2 - 11.11.20 - 09:55
(1) А передается по локалке, или через интернет?
   Impuls20_03
 
3 - 11.11.20 - 10:07
(2) Вообще по локалке. Но я пробую на своем компе. На нем стоит сервер 1c + MSSQL. Так что оно даже в локалку не выходит. Так чисто через стек прогоняется. MXL весит всего 9 Мб
   alkorolev
 
4 - 11.11.20 - 10:15
(0) в расшифровке много данных лежит? на клиенте отображается сформированный табДок? Все 400 страниц?
   timurhv
 
5 - 11.11.20 - 10:16
(3) Следите за объемом ОЗУ.
   Kassern
 
6 - 11.11.20 - 10:21
(3) А дальше что с файлом делаешь, когда из временного хранилища на клиенте получаешь двоичные данные?
   Fedor-1971
 
7 - 11.11.20 - 10:43
(0) Есть форма, на ней лежит поле с типом ТабличныйДокумент,
бежим на сервер, формируем печ.форму и заполняем данное поле. Правильно понял?

Либо нажимаем некую кнопку и после формирования табДок.Показать()

Хоть схематично код покажи.
   Impuls20_03
 
8 - 11.11.20 - 11:15
(7) Упростил до самого простого варианта. Нажимаем кнопку, бежим на сервер заполняем ТабДок, передаем его на клиент, на клиенте ТабДок.Показать(). Сам код заполнения ТабДок - около 8 секунд, далее после Возврат ТабДок; 40 секунд курим, после ТабДок.Показать() - 2 секунды и документ сформирован.
ОЗУ на компе 32 ГБ. Проц i5. На клиенте все 400 страниц махом показываем.
   Kassern
 
9 - 11.11.20 - 11:28
(8) Если табдок вынести на форму и ничего не возвращать на клиент? ТабДок.Показать() уже юзать не нужно будет
   polosov
 
10 - 11.11.20 - 11:30
(8) Наверное валидатор XML при передаче данных с сервера на клиент тупит.
   timurhv
 
11 - 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% времени занимает строчка на клиенте:
ТабДок = ПолучитьИзВременногоХранилища(АдресТабДок);

Как вариант на сервере получать двоичные данные и их передавать, на клиенте открывать.
   Rovan
 
12 - 11.11.20 - 11:43
а такой вариант, что передать на клиент сами даннные и уже там заболнить ТабДок ?
   Impuls20_03
 
13 - 11.11.20 - 11:48
(12) Чет мне кажется что это будет не быстро все равно.
   alkorolev
 
14 - 11.11.20 - 12:43
(12) все основные методы работы с ТабДоком на клиенте не работают
   acht
 
15 - 11.11.20 - 12:49
(8) Сделай через контекстный серверный вызов, чтобы документ был реквизитом формы и прихал на клиента вместе с формой.
   Kassern
 
16 - 11.11.20 - 12:56
(15) я ж об этом написал (9) видимо ТС это не устраивает
   acht
 
17 - 11.11.20 - 12:59
(16) Скорей всего ТС даже не пробовал.
Там его даже выносить на форму не надо, а просто реквизит формы сделать и заполнить, чтобы он с контекстом приехал, а не вручную через временной хранилизе и тыпы.
   timurhv
 
18 - 11.11.20 - 13:25
(17) Так конечно быстро работает, по 40000 из (11) отработалось за 34 сек. Но и памяти rphost сожрал 14265 МБ
   MyNick
 
19 - 11.11.20 - 13:32
А если через хранилище значения его сжать, а на клиенте распаковать?
   Kassern
 
20 - 11.11.20 - 14:11
(18) сейчас потестил табдок на 400тыс строк у себя, если просто сформировать на клиенте, заполнить функцией на сервере, вернуть табдок на клиент и показать, то у меня заняло 71сек. Если же на сервере этот же ТабДок записать в ексель, а на клиенте ЗапуститьПриложение(файл экселя) то все это телодвижение занимает 23сек)))
П.С. если без изврата сделать как я написал в (9) то на форме данный табдок выводится за 3.8сек все 400тыс строк...
   Вафель
 
21 - 11.11.20 - 14:16
так не передавай на клиент - оставляй на сервере.
1с сама умеет порциями с сервера получать
   RomanYS
 
22 - 11.11.20 - 14:18
(20) >> то на форме данный табдок выводится за 3.8сек все 400тыс строк...
Не все, а только видимую часть. Табдоки в УФ вроде кешируются и динамически подгружаются частями.

А вопрос зачем ТСу ТД с 400к строк уже задавали?
   Kassern
 
23 - 11.11.20 - 14:21
(21) ТСу нужно 400 страниц показать, насколько я понял, а про 400тыс строк - писал timurhv (11)
   VladZ
 
24 - 11.11.20 - 14:26
(0) "Общий объем около 400 страниц." - что это? Оперативный отчет?
Кому нужен отчет в 400 страниц?
   Rovan
 
25 - 11.11.20 - 15:45
(+24) видимо какая-то гос. контора.... очень любят они всё печатать и складывать в архив ! :-)
   Kassern
 
26 - 11.11.20 - 15:51
(25) Для этого не обязательно показывать табдок. Сохраняй его сразу куда надо, или печатай
   VladZ
 
27 - 11.11.20 - 15:53
+26 Или так:
- сформировать на сервере
- отправить по почте нужным получателям.
   Impuls20_03
 
28 - 11.11.20 - 16:04
(16) Нет. Просто это не работает. Я такое делал изначально
   Kassern
 
29 - 11.11.20 - 16:06
(28) какая ошибка?
   Impuls20_03
 
30 - 12.11.20 - 07:59
(29) Ошибок нету, просто долго формируется
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.