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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.12.2020, 11:34   #41  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Да, все работает без Экселя, в пакете через OXML. Наконец-то можно избавиться от всяких буферов обмена и ADO Recordset для цивилизованного и самое главное быстрого вывода данных в Эксель без всяких хакерских уловок.
Просто организм уже настолько привык к хакерским способам вывода в Эксель, что уже пропускаешь мимо ушей цивилизованные способы.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 13.12.2020, 16:00   #42  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Сколько памяти при этом отъедает АОС аксапты в течении этих 10 минут ?

У меня была подобная задача. Выгрузить пару-тройку сотен тысяч строк из БД в файл excel в указанную пользователем сетевую папку.
С отягчающими обстоятельствами - пользователи могли в пакетный режим отправить сразу несколько подобных отчётов. При использовании вывода данных через DocumentFormat.OpenXML оперативная память на сервере быстро заканчивалась.

Красивая шапка в отчёте была не нужна, поэтому я использовал промежуточный файл CSV.
Файл в памяти не держится, заполняется через System.IO.File::AppendAllText. Накапливается несколько мегабайт данных, записывается в файл и так в цикле.
Потом файл открывается с помощью Microsoft.Office.Interop.Excel, устанавливаются форматы данных в столбцах и происходит сохранение в xlsx. Память сильно расходуется только в этот момент.
__________________
Дмитрий
Старый 13.12.2020, 19:42   #43  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Структура файла простая. Не проще ли сгенерить xml файл записью в текстовый файл, запаковать в архив ииназвать xlsx. Быстро и памяти не тратится.
Старый 18.12.2020, 10:36   #44  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Logger Посмотреть сообщение
Структура файла простая. Не проще ли сгенерить xml файл записью в текстовый файл, запаковать в архив ииназвать xlsx. Быстро и памяти не тратится.
Имеется в виду xml-файл формата "Таблица XML 2003" ?
Если да, то excel не откроет такой файл.

А если имеются в виду все каталоги и файлы внутри архива xlsx, то csv проще.
Не нужно морочиться с вставкой строк, дат и прочих хитрых значений.
И непонятно сколько памяти потратит архиватор на формирование файла-архива.
__________________
Дмитрий

Последний раз редактировалось Damn; 18.12.2020 в 10:44.
Старый 18.12.2020, 12:25   #45  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Структура файла простая. Не проще ли сгенерить xml файл записью в текстовый файл, запаковать в архив ииназвать xlsx. Быстро и памяти не тратится.
кстати, хорошая идея сгенерить csv, и через PowerShell сгенерить xlsx из csv, попробовал, работает:

$excel = New-Object -ComObject Excel.Application
$excel.Workbooks.Open("c:\temp\www2.csv").SaveAs("c:\temp\FileName.xlsx",51)
$excel.Quit()
За это сообщение автора поблагодарили: BOAL (3).
Старый 18.12.2020, 14:02   #46  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Так у автора и вопрос как это сделать на пакетном сервере, если Excel там устанавливаться не будет.
А без Excel New-Object -ComObject Excel.Application увы, не катит. Если бы он был, то и из Аксы это сделать можно было.
Старый 18.12.2020, 16:10   #47  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Пока все работает стабильно. На выходе получаются файлы Эксель размером 60 мегабайт. Параллельно работают другие пакетники.
В общем класс XMLExcelReport_RU, OpenXML, CIL и .NET рулят. Пока что. Эксель не нужен для этого.
А если CIL отключить, то все работает в сотни раз медленнее - в файл начинаются выводиться по 2-3 строчки в секунду. А с включенным CIL - 500 тыс. строк за 10 минут.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/

Последний раз редактировалось Ace of Database; 18.12.2020 в 16:15.
Старый 26.12.2020, 20:59   #48  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
..
А если CIL отключить, то все работает в сотни раз медленнее - в файл начинаются выводиться по 2-3 строчки в секунду. А с включенным CIL - 500 тыс. строк за 10 минут.
Ээмм, прости за наивность. А на пакетном сервере в акс2012 с выполнение пакета на Сервер разве можно управлять отключением CIL? Я всегда был уверен - что попало в пакетный сервер аск2012 - попало в CIL
Старый 27.12.2020, 14:40   #49  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Полагаю, что пакеты запустили в старом режиме как в акс4. Запускается из под ax32.exe но если пакетный класс помечен как server или called from то он работает при этом на сервере и в режиме p-code.
А без ax32.exe это невозможно.
Старый 27.12.2020, 15:02   #50  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А что все отладку и тестирование сразу делают в пакетном режиме?
Думаю, что Ace of Database все таки проверил в интерактивном режиме без CIL, потом в CIL, а уж потом начал запускать в пакете.
Старый 28.12.2020, 12:12   #51  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Когда я говорил, что отчет работает медленно не в CIL, то имел в виду его запуск не в пакете и с отключенным CIL. Когда я говорил, что отчет работает быстро в CIL, то имел в виду, что он работает быстро как в пакетном режиме, так и не в пакете, но со включенным CIL.
Все, больше никаких комбинаций я не имел в ввиду.
Надо специально оформить код так, чтобы он выполнялся в CIL даже если запускаешь отчет не в пакете. И собрать CIL. И включить в настройках пользователя CIL. И тогда отчет работает быстро (в сотни раз быстрее чем без CIL).
Класс, который работает - серверный. И в пакете он серверный и не в пакете. Когда я говорю про разницу между CIL и не-CIL, я имею в виду галочку в настройках пользователя. В пакете работает или не в пакете - на быстродействие сильно не влияет. Главное - чтобы работало в CIL.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 27.01.2021, 13:00   #52  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Про EPPlus.dll
Цитата:
Сообщение от Zick-Zibn Посмотреть сообщение
Ммм... Да там только одну dll в узел References добавить, вот и вся установка ПО.
При попытке добавить Reference - получаю ошибку "Выделенный файл не является допустимой сборкой .NET, поэтому ссылка не может быть добавлена".

И что с ней делать дальше, подскажите?

DAX2009, EEPlus.dll v. 4.1.1.0
__________________
Best Regards,
Roman
Старый 27.01.2021, 15:16   #53  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Если не ошибаюсь, надо найти библиотеку на версии .Net 3.5
Старый 27.01.2021, 17:25   #54  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Про EPPlus.dll
Цитата:
Сообщение от Dreadlock Посмотреть сообщение
Если не ошибаюсь, надо найти библиотеку на версии .Net 3.5
Это понятно, но это - программа-минимум. Чего хотят:

1. DLL должна работать из пакетных заданий, то есть, насколько я понимаю, должна быть зарегистрирована на сервере (?), то есть должна быть x64 (?).
2. DLL должна быть бесплатной, то есть версия ее должна быть меньше 5.0 (начиная с 5.0 она платная. И для скачивания на официальном сайте, доступна, ессно, только эта версия).

Вооот...
__________________
Best Regards,
Roman
Старый 27.01.2021, 18:36   #55  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Тут её нет?
За это сообщение автора поблагодарили: RVS (3).
Старый 27.01.2021, 21:25   #56  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Dreadlock Посмотреть сообщение
Тут её нет?
Спасибо, нашел уже, что хотел...
__________________
Best Regards,
Roman
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
instructorbrandon: Exam MB-500 Instructor Brandon Study Guide: Microsoft Dynamics 365: Finance and Supply Chain Apps Developer Blog bot DAX Blogs 0 20.05.2020 15:16
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Пользовательский генератор строк-перечислений...- 2: Доп.вкладка для SysQueryForm Gustav DAX: База знаний и проекты 1 04.05.2007 18:04
Предельное количество строк в Report Владимир Максимов DAX: Программирование 1 22.12.2005 15:02

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

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

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