Имя: Пароль:
1C
1С v8
Оптимизация отчета делает только хуже
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 секунд - ожидаемое время. Спасибо.