Хранение табличного документа на клиенте между вызовами функции

1. Adnes 06.02.22 23:13 Сейчас в теме
Добрый день!

Имеется следующая схема:
Из внешней обработки печатаем ценники. По нажатию на кнопку, формируется табличный документ. Далее записываем его во временное хранилище, чтобы при повторной печати не дергать серверную процедуру, а получить уже готовый макет для печати. Схема работает, но поставили задачу ускорить вывод на печать. Пробовал хранить в переменной на клиенте, пробовал через хранилище значений. Хранилище оказалось пока быстрее.

Подскажите, какие есть ещё варианты хранения макета на клиенте?
По теме из базы знаний
Найденные решения
2. a30v 07.02.22 00:25 Сейчас в теме
(1) Элемент формы ПолеТабличногоДокумента для обычной формы. Реквизит формы с типом Табличный документ для управляемой.
6. FatPanzer 07.02.22 11:52 Сейчас в теме
Общий клиентский модуль с признаком повторного использования.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 35 07.02.22 00:33 Сейчас в теме
(1)Стоит выяснить в какие моменты тормозит. Сделать замер производительности, и уже по результатам смотреть.
ImHunter; +1 Ответить
5. Adnes 07.02.22 11:49 Сейчас в теме
(3)
(1)Стоит выяснить в какие моменты тормозит. Сделать замер производительности, и уже по результатам смотреть.


Замер делал, дольше всего происходит извлечение из временного хранилища. Делал 100 повторений в цикле для статистики.

На счет того, что хранилище быстрее я погорячился, но вопрос про дополнительный варианты хранения табличного документа актуален. Что ещё можно попробовать?
1) Хранилище значений
2) Переменная
3) ... ?

Текст процедуры
Прикрепленные файлы:
7. Sashares 35 07.02.22 11:55 Сейчас в теме
(5)Зачем вам его хранить на клиенте?
Вот вы сформировали на сервере табличный документ в ПечатьНаСервере - и поместите его там же во временное хранилище, без возвращения на клиент.

UPD. Вы можете сделать таблицу значений в реквизитах формы, с колонками - Штрихкод, Магазин, Ценник, и др. и ТабДок.
В нем просто хранить табдок как есть, без помещения во временное хранилище.

Перед печатью проверять - есть ли в таблице уже подготовленный, и если нет то формировать табличный документ и добавлять в таблицу строку.

Получится такой вот кэш ценников.
11. Adnes 07.02.22 13:46 Сейчас в теме
(7) ТаблицаЗначений как вариант, надо будет глянуть как быстро работает. А при реальном тестировании через переменную возникла ошибка.
Недопустимая операция для реквизита формы
{ВнешняяОбработка.ПечатьЦенников.Форма.Форма.Форма(516)}: Таб.Показать();


Первый вызов печать отрабатывает. А при повторном вызове - ошибка. Если подождать 30 сек. то опять выводит на печать.
Явно завязано на кэше, но вот почему ТабличныйДокмуент сформированный на сервере стал на 30сек. реквизитом формы непонятно.
9. SlavaKron 07.02.22 12:22 Сейчас в теме
(1)
Пробовал хранить в переменной на клиенте, пробовал через хранилище значений. Хранилище оказалось пока быстрее.
Каким образом определили, что хранилище быстрее переменной?
10. Adnes 07.02.22 12:25 Сейчас в теме
(9) Была ошибка в коде. Переменная быстрее на порядок. Делал замер производительности и увидел ошибку.
2. a30v 07.02.22 00:25 Сейчас в теме
(1) Элемент формы ПолеТабличногоДокумента для обычной формы. Реквизит формы с типом Табличный документ для управляемой.
4. lostcay 9 07.02.22 01:53 Сейчас в теме
Дёргай лучше сервер, чем клиент. Зачем перекидывать весь сформированные макет? Запихни его в "ОбщиеМакеты". А потом открывай форму (или это обработка) печати прямой ссылкой на него. С временным хранилищем лучше не играться.
6. FatPanzer 07.02.22 11:52 Сейчас в теме
Общий клиентский модуль с признаком повторного использования.
8. alex_bob 246 07.02.22 12:01 Сейчас в теме
Может сохранять в ПДФ-файл, а при повторной печати распечатывать средствами ОС?
12. Adnes 07.02.22 13:50 Сейчас в теме
(8)Теоретически можно, но придется, но будет задействована файловая система. Кроме того, это же магазины, они печатают ценники в невероятных объёмах, так что ещё и периодическую чистку от ПДФ надо предусмотреть.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот