Имя: Пароль:
1C
1C 7.7
v7: Быстрый экспорт в книгу Excel
0 linoblack
 
13.05.16
17:31
Для экспорта в эксель использую нечто в таком духе

Процедура Выгрузить_в_Excel()
    xl=СоздатьОбъект("Excel.Application");
    xl.Workbooks.Add(); //Добавляем новый документ
    xl.ScreenUpdating = 0;
    xl.EnableEvents = 0;
    xl.Visible = 0;

    row=1; //первая строка
    спр=СоздатьОбъект("Справочник.Контрагенты");
    спр.ВыбратьЭлементы();
    Пока спр.ПолучитьЭлемент() = 1 Цикл
        xl.Cells(row,1).Value=спр.Код;
        xl.Cells(row,2).Value=спр.Наименование;
        row=row+1;//переходим на следующую строку
    КонецЦикла;
КонецПроцедуры

сами данные отбираются быстро, а вот экспорт таким способом идет очень долго. данные отобраны в несколько таблиц и в екселевском файле должны быть в одной книге на разных листах. есть ли способ ускорить?
1 Mikeware
 
13.05.16
17:33
Рисуй в мокселе, выгружай в эксель, там копируйй.
Ну, либо используй йоксель
2 Изучаю1С8
 
13.05.16
17:38
Йоксель да
3 linoblack
 
13.05.16
17:39
(2) йоксель/моксель - это какая-то внешняя компонента?
4 Изучаю1С8
 
13.05.16
17:39
5 Генератор
 
13.05.16
17:39
mxl не помню стандартно в excel в 7.7 наверно не сохранить, а в 8 я бы вывел в табдокумент и сохранил в эксель
6 Изучаю1С8
 
13.05.16
17:40
7 linoblack
 
13.05.16
17:42
(5) если бы не нужно было все в одном файле, но на разных листах, я бы тоже так делал, но....
8 linoblack
 
13.05.16
17:42
(6) благодарю. ща попробую
9 Mikeware
 
13.05.16
17:44
(3) моксельт - это стандартный mxl 1с.
йоксель - дали уже ссылку.
(7) Ну дык копипаст программный никто не отменял.
10 Изучаю1С8
 
13.05.16
17:51
(8) Посмотри там в готовых решениях есть готовая обработка по сохранению больших таблиц.
11 Генератор
 
13.05.16
17:53
(7), (9), да я помню для выгрузки в какой-то банк так и делал, сохранял в разные xls потом копировал в один
12 HawkEye
 
13.05.16
18:27
(5) сохранить...
(0) что мешает вывести отчет в таблицу 1С и сохранить ее в формате excel?
13 linoblack
 
13.05.16
18:28
ччерт, у меня все данные в объектах таблицазначений, а йоксель хочет объет таблица
14 linoblack
 
13.05.16
18:29
а рисовать мне не нужно
15 linoblack
 
13.05.16
18:34
получается, самый быстрый способ - это все же нарисовать таблицы, потом их сохранить в отдельные файлы, и потом программно файлы объединить?
16 Fragster
 
гуру
13.05.16
18:40
я через ADODB очень быстро заполнял (и читал) простые эксельки
17 Генератор
 
13.05.16
19:48
(16) особенно читать когда на сервере офиса нет
18 NorthWind
 
13.05.16
22:45
(16) а технология заполнения какая? Заранее подготовить пустой xls с нужными листами и потом insert? Мне заполнять не надо было, только читал, но вдруг понадобится.
19 linoblack
 
14.05.16
12:42
(18) отбор данных делаю прямыми запросами. т.е. имею десяток таблиц значений. их нужно быстро скинуть в один экселевский файл. через объект Excel.Application получается медленно.
20 NorthWind
 
14.05.16
13:09
(19) ну видите, люди пишут что можно через ADODB заполнять. Можно попытаться. Там нет ограничения на то, чтобы работать с одним листом, как в случае сохранения mxl в xls.
21 vladmenleo
 
14.05.16
13:52
Самое быстрое, ИМХО через Йоксель, там можно вроде сразу многолистовой эксель создавать, там методы есть вот пример кода:
Документ = СоздатьОбъект ("ТабличныйДокумент");
Документ.ЗагрузитьИзТаблицы(гТаблица);
Конвертер = СоздатьОбъект ("КонвертерExcel");
        Книга = Конвертер.Создать ();
        Книга.Листы.Добавить (ВыбНазваниеЛиста, Документ);
        Книга.ПараметрыКонвертера.РаспознаватьЧисловыеЗначения = 1;
        Книга.Записать (ВыбИмяФайла);
гТаблица - это Таблица. т.е тебе надо только вывести ТЗ в таблицу и потом в цикле понадабовлять листов в книгу эксель
22 linoblack
 
14.05.16
17:51
(21) т.е. все же таблицы придется рисовать?
23 Mikeware
 
14.05.16
18:16
(22) попробуй загрузить. Ты вообще справку к нему читал?
24 linoblack
 
14.05.16
18:27
(23) читал. йоксель вроде хочет работать с объектом типа таблица, а не таблицазначений.
25 linoblack
 
14.05.16
18:28
ладно, сделал универсальную функцию вывода таблицы значений в таблицу.
26 linoblack
 
14.05.16
18:30
они все равно все однотипные прямоугольные
27 linoblack
 
14.05.16
19:53
все взлетело. ускорение экспорта через йоксель - в 25.4 раза. благодарочка за подсказку.
28 Fragster
 
гуру
15.05.16
10:57
(18) да, болванки экселей с листами с шапками, заполнение через инсерт. очень быстро работает, единственное - если сложное оформление - то его придется делать через COM