Есть обработка, которая заполняет шаблон в виде табличного документа определенными данными. Запись данных в ячейку выполняется с помощью методов SetString() и SetValue().
Document = Desktop.LoadComponentFromURL(УРЛ, "_blank", 0, Args);
Sheets = Document.getSheets();
Sheet = Sheets.getByIndex(
0);
Для ш=1 из ТаблицаРезультата.Колонки Цикл
Cell = Sheet.getCellByPosition(ш,0);
Cell.setString("Колонка "+ш);
КонецЦикла;
В пустом шаблоне обработка работает достаточно быстро. Но если шаблон представляет из себя книгу, в которой имеются достаточно "тяжелые" листы, то выполнение метода SetString() начинает отнимать много времени и обработка начинает адово тормозить. Такое ощущение, что при заполнении значения выполняется пересчет значений в других ячейках, несмотря на то, что они не связаны с заполняемыми.
Пробовал отключить в настройках офиса автообновление данных - Сервис / Содержимое ячейки / Вычислять автоматически - ускорения нет.
Попробовал добавить отключение автообновления перед заполнением шаблона:
Document.lockControllers();
Document.addActionLock();
Document.enableAutomaticCalculation(False);
...заполнение шаблона...
Document.enableAutomaticCalculation(True);
Document.calculateAll();
Document.removeActionLock();
Document.unlockControllers();
Результат нулевой. Как еще можно оптимизировать заполнение ячеек в табличном документе? Или избежать тормозов при заполнении сложных документов можно только при использовании "пакетной" записи с помощью COMSafeArray?