Быстро присвоить формулы Excel

1. ogre2007 302 29.07.18 12:46 Сейчас в теме
Всем привет.
Делаю выгрузку прайс-заказа. УТ11.4 + апач. Сервер свежий, ssd. Там +-7000 строк + картинки. Весь прайс после выгрузки весит 10 мб.
Сохраняю, прайс в Excel:
Результат.Записать(ДиалогВыбораФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

А потом проставляю формулы в нем, типа "сумма = заказано * цена":
Для Row = ПерваяСтрокаДанных По RowCount - 1 Цикл
	ЯчейкаФормулы = ExcelЛист.Cells(Row,КолонкаСуммаСтроки);
	ЯчейкаФормулы.Formula = "=RC[-1]*RC[-2]";
КонецЦикла;

Происходит это чертовски долго. До 40 минут. Хотя в остальном 1С летает без вопросов. В отладчике именно это место висит 90% времени.
Думал можно в 1С перед сохранением эти формулы прикрутить - не нашел варианта.
Может целиком всей колонке дать эту формулу, тоже не нашел варианта.
Может кто сталкивался, есть идеи, как ускорить этот процесс?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. herfis 513 29.07.18 14:51 Сейчас в теме
Известная проблема.
К счастью, в Excel можно работать с диапазонами ячеек, меняя свойства ячеек диапазона присвоением массива значений (одной командой).
Только одинэсные массивы ексель не понимает. Зато понимает COMSafeArray.
Гугли по ключевым словам "1С предприятие excel range COMSafeArray"
3. ogre2007 302 29.07.18 16:48 Сейчас в теме
Плохо пользуюсь поиском. Нашел ответ в статье https://infostart.ru/public/398279/
Загрузил на клиенте в массив и обработал его гораздо быстрее, 1 минута получилась.
Область = Лист.Range(ЛистЭксель.Cells(1,1), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок));
Данные = Область.Value.Выгрузить();

Это что касается загрузки, которая тоже долго шла. По выгрузке продолжаю "курить".
Оставьте свое сообщение

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