Добрый день!

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

Подскажите, какие есть ещё варианты хранения макета на клиенте?
---
Элемент формы ПолеТабличногоДокумента для обычной формы. Реквизит формы с типом Табличный документ для управляемой.
---
Общий клиентский модуль с признаком повторного использования.
---
Стоит выяснить в какие моменты тормозит. Сделать замер производительности, и уже по результатам смотреть.
---
(1)Стоит выяснить в какие моменты тормозит. Сделать замер производительности, и уже по результатам смотреть.

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

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

Текст процедуры
```1c
    Нач = ТекущаяУниверсальнаяДатаВМиллисекундах();

    Для СЧ = 1 По 100 Цикл

    БылаПечать = Ложь;

    Если ПредШК = Штрихкод И ПредМаг = Магазин И ПредЦенник = БазовыйЦенник И ТекущаяДата() - ПредДата < 30 И ПредЭтикетка <> Неопределено
    И ПредНом = Номенклатура И ПредХар = Характеристика Тогда

    Таб = ПолучитьИзВременногоХранилища(ПредЭтикетка);
    //
    //Таб = ТабДокПрошлойПечати;
    //
    Иначе

    Таб = ПечатьНаСервере(Штрихкод, Магазин, БазовыйЦенник, Номенклатура, Характеристика, БыстраяПечать);
    БылаПечать = Истина;

    КонецЕсли;

    Если Таб <> Неопределено Тогда

    Таб.ИмяПараметровПечати = "ПечатьЦенника из обработки для обработки быстрой печати";

    //Если СразуНаПринтер Тогда
    // Таб.Напечатать();
    //Иначе
    // Таб.Показать();
    //КонецЕсли;

    КонецЕсли;

    ПредШК = Штрихкод; ПредМаг = Магазин; ПредЦенник = БазовыйЦенник; ПредДата = ТекущаяДата();
    ПредНом = Номенклатура; ПредХар = Характеристика;

    Если БылаПечать Тогда
    ПредЭтикетка = ПоместитьВоВременноеХранилище(Таб, ЭтаФорма.УникальныйИдентификатор);
    //
    //ПредЭтикетка = ";
    //ТабДокПрошлойПечати = Таб;
    //
    КонецЕсли;

    КонецЦикла;

    Кон = ТекущаяУниверсальнаяДатаВМиллисекундах();

    Потрачено = Окр((Кон-Нач)/1000, 3);
    Элементы.Декорация2.Заголовок = СтрШаблон("%1 с.", Потрачено);
```
---
Зачем вам его хранить на клиенте?
Вот вы сформировали на сервере табличный документ в ПечатьНаСервере - и поместите его там же во временное хранилище, без возвращения на клиент.

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

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

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

Первый вызов печать отрабатывает. А при повторном вызове - ошибка. Если подождать 30 сек. то опять выводит на печать.
Явно завязано на кэше, но вот почему ТабличныйДокмуент сформированный на сервере стал на 30сек. реквизитом формы непонятно.
---
Пробовал хранить в переменной на клиенте, пробовал через хранилище значений. Хранилище оказалось пока быстрее. Каким образом определили, что хранилище быстрее переменной?
---
Была ошибка в коде. Переменная быстрее на порядок. Делал замер производительности и увидел ошибку.
---
Элемент формы ПолеТабличногоДокумента для обычной формы. Реквизит формы с типом Табличный документ для управляемой.
---
Дёргай лучше сервер, чем клиент. Зачем перекидывать весь сформированные макет? Запихни его в "ОбщиеМакеты". А потом открывай форму (или это обработка) печати прямой ссылкой на него. С временным хранилищем лучше не играться.
---
Общий клиентский модуль с признаком повторного использования.
---
Может сохранять в ПДФ-файл, а при повторной печати распечатывать средствами ОС?
---
Теоретически можно, но придется, но будет задействована файловая система. Кроме того, это же магазины, они печатают ценники в невероятных объёмах, так что ещё и периодическую чистку от ПДФ надо предусмотреть.