|  | Оптимизация отчета делает только хуже | ☑ | 
    
        | 0
    
        Rizhij_Nikitos   05.08.19✎ 17:33 | 
        Делаю отчет:
— на форме вызываю сервер;
 — на сервере формирую табличный документ и возвращаю его на клиент;
 — помещаю его в поле табличного документа.
 
 Сначала были показатели:
 3 секунды вызов функции СформироватьТабличныйДокумент()
 20 секунд на все серверное добро.
 
 Оптимизировал серверное добро, получил:
 18 секунд на вызов функции СформироватьТабличныйДокумент()
 6 секунд на серверное добро.
 
 Кто-то может объяснить что это за вызов клиентский такой? Из чего складывается время вызова серверного метода?
 
 
 &НаКлиенте
 Процедура Сформировать(Команда)
 
 ТабличныйДокумент = Новый ТабличныйДокумент;
 ТабличныйДокумент = СформироватьТабличныйДокумент(Элементы.ВариантОтчета.ТекстРедактирования);
 
 КонецПроцедуры
 
 &НаСервере
 Функция СформироватьТабличныйДокумент(ВариантОтчета)
 
 ОбъектОтчета = РеквизитФормыВЗначение("Отчет");
 ТабДок = ОбъектОтчета.Печать(ВариантОтчета);
 Возврат(ТабДок);
 
 КонецФункции
 |  | 
    
        | 1
    
        Numerus Mikhail   05.08.19✎ 17:35 | 
        Перенеси печать в модуль менеджера
вызывай сервер без контекста
 |  | 
    
        | 2
    
        Euguln   05.08.19✎ 17:39 | 
        А зачем табличный документ тянуть с сервера на клиента? Помещай на сервере.     |  | 
    
        | 3
    
        Rizhij_Nikitos   05.08.19✎ 17:40 | 
        (1) Это внешний отчет - у меня нет модуля менеджера. Если я буду без контекста вызывать, как мне тогда обращаться к объекту отчета? И даже если я перенесу весь серверный код в процедуры &НаСервере в модуле формы - мне все равно нужен будет объект отчета для получения макета.     |  | 
    
        | 4
    
        RomanYS   05.08.19✎ 17:40 | 
        (0) Сделай ТабличныйДокумент реквизитом формы и заполняй его. Передавать явно его не надо     |  | 
    
        | 5
    
        Rizhij_Nikitos   05.08.19✎ 17:41 | 
        (2), (4) да, ушло до 7 секунд - ожидаемое время. Спасибо.     |  |