Показать сообщение отдельно
Старый 11.04.2011, 17:45   #23  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Неизвестный герой Columbus с ником TRUD, конечно, проделал большую работу. Однако нельзя же было вообще не интересоваться как там и что сделано? Этот функционал, очевидно, был сделан под Ax2.5 и слегка "подмазан" для Ax3.0. Соответственно, содержит ряд ошибок и неточностей. Одно лишь ограничение по длине символьного значения в 100 символов в свое время стоило дополнительных нервов

Впрочем, винить в этом исполнителя не стоит. Очевидно, у него был дефицит времени. Но если уж портировать это решение в Ax2009 стоило бы "подчистить шероховатости" По крайней мере, про типы Int64 и DateTime стоило вспомнить

Во вложении проект для Ax2009 где экспорт в Excel решен через ADO RecordSet. В принципе, системные формы и классы изменены точно так же, что и в решении от Bega. Ну, разве что, в методе класса \Classes\ClassFactory\createViewer() стоит ссылка уже на мои классы

Проблемы, которые так и не удалось решить

1. В базовом классе reportOutputUser на основе которого и формируется весь процесс нет обработки полей типа GUID. Как следствие, если в отчете есть подобное поле, то экспорт в Excel вылетит с исключением. Ничего в Excel импортировано не будет.

Перехватить эту ошибку, чтобы вывести хотя бы все остальное - невозможно. Это ошибка "ядра".

2. При экспорте в Excel опять же, где-то в недрах базового класса reportOutputUser происходит "потеря" настроек принтера. Очищается экземпляр класса PrintJobSetting.

Это-то ладно, поскольку к моменту выполнения reportOutputUser сам отчет уже сформирован и остается просто отобразить результат. Однако если вывод в Excel сделать не из формы предварительного просмотра, а напрямую по кнопке Ok, то происходит запись "пустого" PrintJobSetting в кеш отчета. Соответственно, следующий запуск отчета выводит полную ерунду, пока не восстановишь настройки принтера.

Где именно происходит перезапись кеша отчета - непонятно. По крайней мере на момент завершения \Forms\SysPrintForm\Methods\closeOk() все настройки на месте.

В Ax2.5 такой проблемы не было, поэтому можно было отправлять в Excel напрямую из отчета, а не через окно предварительного просмотра. Но в Ax2009 как обойти эту проблему я не нашел.
Вложения
Тип файла: xpo SharedProject_AxaptaReport2Excel.xpo (248.1 Кб, 427 просмотров)
За это сообщение автора поблагодарили: Ace of Database (5), Bega (5), perestoronin (1).