AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.05.2011, 19:36   #1  
Leopold Stotch is offline
Leopold Stotch
Участник
 
8 / 13 (1) ++
Регистрация: 13.02.2009
Очень медленно происходит выгрузка отчетов в Excel
При выгрузке отчетов в Excel (например стандартный ИНВ-3) выгрузка происходит очень медленно - 80 строк выгружаются 3-5 минут, 4000 строк - несколько часов.

И так в принципе со всеми отчетами, которые используют ComExcelDocument_RU. Из трассировки видно что подвисания начинаются на строке
comRange = comApplication.range(bookMark);
в методе findRange.

MS Office стоит 2010 Standard, пробовал ставить 2007 - не помогло.
Версия аксапты 2009 SP1 RollUp 2.

Может кто сталкивался с таким или хотя бы есть идеи, как побороть? Буду очень признателен.
Старый 30.05.2011, 19:59   #2  
UNRW is offline
UNRW
Участник
 
383 / 67 (3) ++++
Регистрация: 16.09.2004
Адрес: Москва
Есть альтернативные способы работы с Excel:

1. В шаблон отчета поместить макрос, который будет грузить данные из текстового файла и "ложить" по ячейкам - работает раз в 50 быстрее ComExcelDocument_RU.

2. Работать с excel через ADO - еще быстрее чем вариант 1
Старый 30.05.2011, 20:57   #3  
Leopold Stotch is offline
Leopold Stotch
Участник
 
8 / 13 (1) ++
Регистрация: 13.02.2009
В принципе, сейчас в некоторых случаях используем как раз вариант 1. Но переделывать все старые отчеты под такую схему - не айс. Ввиду того, что когда-то это все работало нормально, возникает вопрос, что же все-таки могло измениться (когда-то - это в других конторах, в которых использовался тот же функционал. При этом железо в целом похожее).
Старый 30.05.2011, 21:50   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,740 / 404 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Leopold Stotch Посмотреть сообщение
В принципе, сейчас в некоторых случаях используем как раз вариант 1. Но переделывать все старые отчеты под такую схему - не айс. Ввиду того, что когда-то это все работало нормально, возникает вопрос, что же все-таки могло измениться (когда-то - это в других конторах, в которых использовался тот же функционал. При этом железо в целом похожее).
ComExcelDocument_RU, по крайней мере с версии 3.0, всегда работал медленно
Старый 31.05.2011, 03:29   #5  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Используем Ax4 sp2, вывод отчета происходит путем формирования большой текстовой строки на все строки-столбцы отчета + копирование через буфер. Сами отчеты были оптимизированы, основное время уходило на отработку запроса к БД и проверку всяких условий.

Поставили несколько машин с Win7 + Office 2010 у клиента - некоторые из них стали работать раз в 5-6 медленнее, чем связка Win XP + Office 2007/2003 при формировании отчетов. Причем путем замера времени вызовов в ComExcelDocument_RU было выяснено, что все (!) обращения к объекту Excel выполняются раз в 5-10 медленнее Причина так и не была найдена... Причем на некоторых машинах работает "по-старому" быстро
Старый 31.05.2011, 11:26   #7  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Используйте текстбуфер пример тесть тут:

Вставка в Excel из TextBuffer. Кодировка
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 31.05.2011, 12:46   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Поячеечное заполнение (в смысле, отдельной командой заполнять каждую ячейку) всегда будет работать относительно медленно. Общая стратегия ускорения вывода - это команды групповой вставки значений. Заполнение многих ячеек одной командой. В идеале, заполнение сразу всех ячеек одной командой. Как правило, это реализуется одним из следующих способов

1. Буфер обмена
2. RecordSet
3. Выгрузка в промежуточные файлы
4. Запрос из макроса Excel напрямую к внешним данным

Если же у Вас "работало быстро", а потом вдруг стало "работать медленно" при этом сам код не менялся и объем выгружаемых данных остался примерно тем же, то надо смотреть настройки Excel, а также настройки операционной системы. Может, антивирус криво настроен. Может с правами доступа что-то намудрили.

И еще, надеюсь, Вы используете предварительно сформированные шаблоны Excel. Т.е. файлы XLT. Создание отчетов "с нуля" или использование в качестве шаблонов обычных файлов XLS, также существенно замедляет формирование отчетов.
За это сообщение автора поблагодарили: Leopold Stotch (1).
Старый 31.05.2011, 13:47   #9  
Leopold Stotch is offline
Leopold Stotch
Участник
 
8 / 13 (1) ++
Регистрация: 13.02.2009
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если же у Вас "работало быстро", а потом вдруг стало "работать медленно" при этом сам код не менялся и объем выгружаемых данных остался примерно тем же, то надо смотреть настройки Excel, а также настройки операционной системы. Может, антивирус криво настроен. Может с правами доступа что-то намудрили.

И еще, надеюсь, Вы используете предварительно сформированные шаблоны Excel. Т.е. файлы XLT. Создание отчетов "с нуля" или использование в качестве шаблонов обычных файлов XLS, также существенно замедляет формирование отчетов.
Да, отчеты из шаблонов формируются - самый простой вариант.
В итоге покопались в настройках Excel - для листов на которые происходит выгрузка, в случае, если установлен режим просмотра страницы "Разметка страницы" или "Страничный", то выгрузка идет намного медленнее, если же поставить значение "Обычный", то время выгрузки существенно уменьшается.
За это сообщение автора поблагодарили: coolibin (1).
Теги
excel, export

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Классы для генерации отчетов в Excel Eldar9x DAX: Программирование 29 10.06.2011 13:18
Sample Design Patterns: Microsoft Dynamics AX - Remedy for slow Microsoft Excel import Blog bot DAX Blogs 0 29.05.2011 17:13
kamalblogs: Quick Excel report – Dynamics Ax 2009 Blog bot DAX Blogs 0 10.05.2011 03:21
emeadaxsupport: Export to Excel can fail on a Windows Terminal Server Blog bot DAX Blogs 0 27.01.2010 13:05
axaptafreak: Copying one line of a grid to Excel Blog bot DAX Blogs 0 17.01.2008 15:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:24.