IE2017

Выгрузка в Excel больших отчетов

Программирование - Практика программирования

1С не позволяет сохранить в Excel отчеты с большим количеством ячеек (например, 100 столбцов на 10 000 строк).
Моя обработка позволяет решить эту проблему.
НЕ использует никаких внешних компонент!!!

Идея заключается в том, что файл отчета сохраняется не целиком, а маленькими порциями, в формате Эксель. Затем через OLE эти маленькие файлы собираются в один большой файл Эксель. Упор делался на быстродействие, и по-моему, я этого достиг.

Скачать файлы

Наименование Файл Версия Размер
-
.zip 14,50Kb
25.09.09
1048
.zip 14,50Kb 1048 Скачать

См. также

Комментарии
1. AntonRost (antonrost) 28.09.06 14:19 Сейчас в теме
Что-то не скачивается. :(
Хотел сравнить со своим: http://infostart.ru/projects/download.php?id=259&file=270&ref=825
2. VasilyKushnir (vasilykushnir) 28.09.06 16:45 Сейчас в теме
А все-таки зыркни на http://infostart.ru/projects/download.php?id=259&file=270&ref=440 - там тоже не хилая скорость и без изворотов с маленькими файлами.
3. Сhe Burashka (CheBurator) 29.09.06 00:06 Сейчас в теме
Выкиньте эту бяку и пользуйте нормальный продукт, который позволяет делать тоже самое не заморачиваясь: всего 5 строк кода и все работает как надо и не надо ни о чем беспокоиться, для тех, кто не имеет возможности программировать здесь лежит готовое решение (в нем же даны ссылки на человека, сделавшего возможным такую чудную вещь:
http://www.infostart.ru/projects/index.php?id=323&ref=174

И, чтоб не быть голословным: отзыв юзера:
"Прикраснейшая програ! Прайс который сам создавался 7 минут на 20280 строк выгрузился за 12,7 секунды!!!!! Обалдеть!!! Стандартным способом Сохранить как.. на это уходило часов 10-11!!! Класс! Тест проходил на машине - 2 x Intel Xeon 3,2 Ггц DDR2 4 Гига....

Разработку victuan имеет смысл юзать там, где политикой запрещено использование ВК.
4. Victor Nespyatin (victuan) 1537 29.09.06 10:46 Сейчас в теме
Ну что ж. Приятно что есть реакция на мои обработки. Эта обработку я перекинул с 1c.proclub.ru. Сделал я еще до того как была написана упомянутая Che Burashka ВК. В принципе, видимо, моя обработка отыграла уже свою роль, и, если не будет возражений, я ее уберу.
5. Сhe Burashka (CheBurator) 29.09.06 12:48 Сейчас в теме
Не надо! Если работает как надо - пусть будет, кому-то подойдет именно эта.
6. Victor Nespyatin (victuan) 1537 30.09.06 10:44 Сейчас в теме
7. Димыч 11.10.06 19:56 Сейчас в теме
просто все клас. все нормально работает....
8. Anonymous 12.10.06 06:16 Сейчас в теме
Господа комментирующие! Просьба "плюсовать" рейтинг! Для меня это будет бОльшая благодарность, чем высказываение типа "просто класс!"
9. JannyFan (JannyFan31) 24.07.07 10:57 Сейчас в теме
Приятно, что есть такие обработки. Эта обработка подвигла меня на написание новых хороших отчетов в 1С. Хорошо то, что не нужно никаких доп. компонент вталкивать, перенести можно в любой момент и все. В отчете есть она и хорошо, заморочно всегда тащить гору библиотек, показывая какойе ты у..... А то, что говорят про эту вещь разные критиканы так понятно - завидуют.
10. gavrish (Gavrish) 26.02.08 13:46 Сейчас в теме
А может кто решал похожие задачи:
- сохранения из 1С в excel в одной ячейке более 256 символов (символы теряются пр сохранении, хотя в самом excel такого ограничения нет), разбивать текст на части не решает вопрос
- не сохраняется вертикальный текст, хотя в обеих программах возможность вывода такого текста есть.
Спасибо за информацию
11. Ужас бухгалтера (Ужас бухгалтера) 216 26.02.08 13:53 Сейчас в теме
(10) Я решал. Здесь: http://yoksel.net.ru/HomePage
В частности, по 256 символов на ячейку и вертикальный текст здесь: http://yoksel.net.ru/ProblemyStandartnogoMxl2Xls
12. Victor Nespyatin (victuan) 1537 03.03.08 06:54 Сейчас в теме
Вот хорошее решение описанной задачи без использования ВК: http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=2188
13. Ужас бухгалтера (Ужас бухгалтера) 216 03.03.08 07:49 Сейчас в теме
(12) Без ВК, зато с использованием Excel по OLE-automation. И за что боролись?
14. Аркадий Кучер (Abadonna) 3681 03.03.08 08:12 Сейчас в теме
(13) Целиком и полностью поддерживаю. Чтобы я на терминальный сервер пустил MS Office - да ни в жизнь ;)))
15. Сергей (Sevko) 17.03.08 15:32 Сейчас в теме
У меня куча отчетов со строками под 50 - 60 тыс. Естественно записать все это в Excel - один гемморой (лично я это через 8-ку делаю, благо стоит вместе с 7-кой). Попробовал воспользоваться данной разработкой и сразу же столкнулся с глюком. Отчет в 65000 строк , 14 колонок. Сравнил одну из колонок с оригиналом и выявил 20 различий, в различных строках:
Получилось Надо
272630697. 131540.75
272630697. 131540.75
272796979. 214681.75
272682809. 157596.75
273193696.00 603585.00
272682776. 157580.25
272956554.00 326794.50
272675768. 154076.25
272748970. 190677.25
272809415. 220899.75
13157.24 1315725.00
13157.24 1315725.00
273447810.00 1175050.00
31737.28 3173730.00
31737.28 3173730.00
14674.84 1467485.00
2735151.41 1444375.00
14674.84 1467485.00
273340841.00 897875.00
273723054.00 2454900.00
16. Victor Nespyatin (victuan) 1537 18.03.08 06:44 Сейчас в теме
1С не всегда правильно сохраняет данные в Эксель.
Проверь выравнивание тескта в этих строках, оно должно быть по правому краю и текст должен быть без лишних знаков препинания. В остальных случаях, не гарантирую верную конвертацию.

Также попробуй воспользоваться альтернативными обработками:
http://infostart.ru/projects/323/
http://yoksel.net.ru/HomePage

А вообще, насколько быстро сохраняет твои отчеты моя разработка? Мне просто интересно.
17. Сергей (Sevko) 18.03.08 10:45 Сейчас в теме
После исправлений http://yoksel.net.ru/Hotfixes все нормализовалось.
Таблицу в 65500 строк и 14 столбцов сохраняет за 32 сек.
Жаль что нет возможности сохранять более 65536 строк (ограничение Excel) - можно было бы разбивать, скажем, на отдельные листы.
18. Аркадий Кучер (Abadonna) 3681 18.03.08 11:15 Сейчас в теме
>перенести можно в любой момент и все.
При одном мААААААААААленьком условии - на компе должен Excel стоять
19. Сергей (Sevko) 18.03.08 11:18 Сейчас в теме
Предлагаю немного дописать код обработки Быстрое сохранение mxl в xls.ert.
В результате мы получаем название файла из названия отчета. В 99% случаев - срабатывает. Помоему удобно.

Если ВсеНормально = 1 Тогда
Сервис = СоздатьОбъект ("Сервис");
Если Сервис.АктивныйКонтекст (гТаблица) = 0 Тогда
Сообщить ("Нет активного табличного документа");
ВсеНормально = 0;
Иначе
Если ТипЗначенияСтр (гТаблица) <> "Таблица" Тогда
Сообщить ("Нет активного табличного документа");
ВсеНормально = 0;
Иначе
//>>> мои строки
Для НомСтроки=1 По 7 Цикл
НомКолонки = 1;
Если ПустаяСтрока(гТаблица.Область(НомСтроки,НомКолонки).Текст)=1 Тогда
НомКолонки = 2;
КонецЕсли;
РазмерШрифта = гТаблица.Область(НомСтроки,НомКолонки).РазмерШрифта();
Если РазмерШрифта>9 Тогда
ВыбИмяФайла = ФС.ТекКаталог()+"\"+СокрЛП(гТаблица.Область(НомСтроки,НомКолонки).Текст)+".xls";
Прервать;
КонецЕсли;
КонецЦикла;
//<<< мои строки
КонецЕсли;
КонецЕсли;
КонецЕсли;
20. Victor Nespyatin (victuan) 1537 02.09.08 13:32 Сейчас в теме
(19) Моя обработка не должна использовать никаких ВК!
21. Роман Петров (PeRom) 50 02.09.08 15:20 Сейчас в теме
17), 18),19),20) Если всё вместе собрать, то получается лучше всего не использовать ничего, кроме чистого 1с - тогда нужно сохранять в виде текста с разделителями......
22. Victor Nespyatin (victuan) 1537 02.09.08 19:40 Сейчас в теме
(21) Это все дело вкуса. Я не имею ничего против ВК. Просто раз я начал позиционировать свою обработку как "без ВК", то должен быть последовательным.
23. profik777 (profik777) 11.12.08 11:28 Сейчас в теме
после установки этой обработки возникли некоторые проблемы: Если в ячейке более 255 символов - он обрезает ее значение до 255.
Как можно исправить???
24. Victor Nespyatin (victuan) 1537 11.12.08 11:59 Сейчас в теме
(23) Обработка тут не причем. Это ограничение, заложенное в платформе.
25. Сергей Изергин (serguson) 116 04.05.09 14:41 Сейчас в теме
Спасибо за обработку !
Была задачка - выгружать в Excel отчеты размером более 600 000 строк (КУДИР для предпринимателя). После небольшой доработки первоисточника (не более 5 строк) -
- нам теперь никакие отчеты НЕ СТРАШНЫ !!!
26. assa Петренко (assa) 54 15.02.11 12:15 Сейчас в теме
27. Светлана Даниленко (LanaSN) 23.09.11 09:44 Сейчас в теме
Спасибо, очень пригодилась обработка, справочник материалов огромный, смотреть по счетам трудно на экране, выгрузить не могли в ексель, теперь все хорошо!
28. Сергей Малыхин (serezhka87) 61 10.10.11 15:24 Сейчас в теме
Огромное спасибо автору. Есть один отчёт по задолжности по кварплате идёт на 20 тыщ строк, раньше сохраняли только в ХТМЛ, а теперь как люди может и в Экселе сохранять. =)
29. admitcom admitcom (admitcom) 24.11.11 09:29 Сейчас в теме
Нужно было сохранить рабочий план счетов в ексель, пытался копировать по 5000 строк, вроде получилось, но было долго и муторно. Попробую сейчас с помощью этой обработки.
30. red eye (redeye911) 5 22.12.11 09:24 Сейчас в теме
Спасибо - очень помогло разобраться с механизмом выгрузки.
31. Стас (Ice-Stas) 22.12.11 16:41 Сейчас в теме
32. Стас (Ice-Stas) 22.12.11 16:43 Сейчас в теме
Предлагаю немного дописать код обработки Быстрое сохранение mxl в xls.ert.
В результате мы получаем название файла из названия отчета. В 99% случаев - срабатывает. Помоему удобно.

Если ВсеНормально = 1 Тогда
Сервис = СоздатьОбъект ("Сервис");
Если Сервис.АктивныйКонтекст (гТаблица) = 0 Тогда
Сообщить ("Нет активного табличного документа");
ВсеНормально = 0;
Иначе
Если ТипЗначенияСтр (гТаблица) <> "Таблица" Тогда
Сообщить ("Нет активного табличного документа");
ВсеНормально = 0;
Иначе
//>>> мои строки
Для НомСтроки=1 По 7 Цикл
НомКолонки = 1;
Если ПустаяСтрока(гТаблица.Область(НомСтроки,НомКолонки).Текст)=1 Тогда
НомКолонки = 2;
КонецЕсли;
РазмерШрифта = гТаблица.Область(НомСтроки,НомКолонки).РазмерШрифта();
Если РазмерШрифта>9 Тогда
ВыбИмяФайла = ФС.ТекКаталог()+"\"+СокрЛП(гТаблица.Область(НомСтроки,НомКолонки).Текст)+".xls";
Прервать;
КонецЕсли;
КонецЦикла;
//<<< мои строки
КонецЕсли;
КонецЕсли;
КонецЕсли;

Здорово
33. Victor Nespyatin (victuan) 1537 22.12.11 16:53 Сейчас в теме
(32)Что за объект Сервис?
Он нарушает мой девиз: "НЕ использует никаких внешних компонент!!!"?
34. Леша Токтосунов (lexa_12184) 18.01.12 09:59 Сейчас в теме
Нормальное универсальное решение.... да имеет свои ограничения и при очень огромных размерах отчетов все равно подтормаживает (например карточка счета за период 5 лет), однако для сохраненения за периоды квартал и месяцы работает отлично.!!!
36. Арти Шарти (Tommy1987) 3 11.03.12 14:19 Сейчас в теме
Да, очень удобно при больших объемах данных. При выгрузках в excel теперь только этот вариант использую.
37. Елена Сув (suvorovalena) 21.03.12 15:52 Сейчас в теме
А почему просто не сохранить в mxl-формате, а потом пересохранить в xls? в mxl 1c сохраняет мгновенно...
38. Victor Nespyatin (victuan) 1537 22.03.12 04:26 Сейчас в теме
(37)Пересохранение большого файла mxl в xls происходит долго.
Оставьте свое сообщение