10.05.2011, 12:15 | #1 |
MS Dynamics AX 2012 R3
|
Методы для постройки екселевского отчёта
Мне нужно создать екселевский отчёт в MS Dynamics AX 4.0
Система сама генерит екселевский файл, т.е. без шаблонов, скелет проекта уже есть и некоторая часть мною уже сделана, но ходу выполнения сего у меня возникло несколько вопросов: 1. Как и каким методом объединить скажем 2(две) ячейки в таком отчёте в 1(одну); 2. 3. Каким методом и как "прорисовать" границы таблицы в таком отчёте? Коллеги, я только учусь делать такие вещи, если кто знает ответ, то приведите пожалуйста примеры кода) Буду признателен. С Уважением Алексей.
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов Последний раз редактировалось ZornFire; 10.05.2011 в 13:12. Причина: Убрал пункт 2. Позднее задам вопрос по этой теме отдельно |
|
10.05.2011, 12:43 | #2 |
Молодой, подающий надежды
|
Если используете класс ComExcelDocument_RU, то можно добавить следующие методы:
Цитата:
X++: public void mergeCells(MSOfficeBookMark_RU _bookMark, int _worksheet = 1) { COM comRange; ; comRange = this.findRange(_bookMark, _worksheet); if (comRange) { comRange.Merge(); } } PHP код:
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), ZornFire (1). |
10.05.2011, 12:49 | #3 |
Участник
|
Чтобы ответить на вопросы номер 1 и 3 и на многие другие следует понять следующее. Аксапта работает с Excel через COM. Объектная структура COM Excel совпадает с внутренней структурой объектов Excel VBA.
Поэтому для того чтобы узнать как то или иное действие над Excel осуществить извне, нужно собственными средствами Excel записать макрос с необходимыми действиями, посмотреть его код и сделать также, только через COM и в аксапте. Вопрос номер 2 выбивается из общего контекста, т.к. не имеет отношения к способу вывода отчёта. |
|
|
За это сообщение автора поблагодарили: lev (2). |
10.05.2011, 12:53 | #4 |
MS Dynamics AX 2012 R3
|
Цитата:
Вопрос номер 2 выбивается из общего контекста, т.к. не имеет отношения к способу вывода отчёта.
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов |
|
10.05.2011, 12:54 | #5 |
Участник
|
Примеры кода Вы найдете на этом сайте, если воспользуетесь поиском. Однако для начала Вам следует все-таки понять несколько вещей.
Цитата:
Сообщение от mr.ZF
Система сама генерит екселевский файл, т.е. без шаблонов
Программист сам, своими руками, подкладывает под себя здоровоенную мину замедленного действия. Когда "рванет" - не ясно, но то, что "рванет" - сомнений не вызывает "Идеальный" экспорт в Excel с точки зрения программиста - это "гладкая" выгрузка таблицы "как есть". Т.е. тупо выгрузить "сетку" на отдельный лист. А потом уже, средствами самого Excel распредилить полученные данные по ячейкам другого листа. Это достаточно просто сделать через шаблоны Excel При таком подходе четко разделяется внешний вид отчета и данные, его наполняющие. Настраивать внешний вид может и специально обученный пользователь. Как ему удобно. Программист никак не привязан к этому внешнему виду и нет необходимости переписывать программный код по формированию отчета. Конечно, это идеал. Не всегда так получается. Но, по возможности, к этому надо стремиться, чтобы не превратится просто в изготовителя отчетов. Цитата:
Сообщение от mr.ZF
1. Как и каким методом объединить скажем 2(две) ячейки в таком отчёте в 1(одну);
(...) 3. Каким методом и как "прорисовать" границы таблицы в таком отчёте? Для "старых" версий Excel это пункт системного меню: Сервис \ Макрос \ Начать запись. Для Excel 2007 посмотрите на ленте аналогичный пункт Разумеется, перенести код макроса в Axapta один-в-один нельзя, но адаптировать его для использования в Axapta никакой проблемы не составляет. Тем более есть куча примеров на данном сайте. Цитата:
Сообщение от mr.ZF
2. Как правильно прописать запрос и связь, если в отчёте используются несколько связанных таблиц, например RAssetTable и RAssetStandards;
|
|
|
За это сообщение автора поблагодарили: lev (2), S.Kuskov (1), ZornFire (1), pedrozzz (1). |
10.05.2011, 12:57 | #6 |
Участник
|
|
|
10.05.2011, 12:58 | #7 |
MS Dynamics AX 2012 R3
|
pedrozzz
Цитата:
Если используете класс ComExcelDocument_RU
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов |
|
10.05.2011, 13:04 | #8 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: ZornFire (1). |
10.05.2011, 13:07 | #9 |
MS Dynamics AX 2012 R3
|
Владимир Максимов,
Я конечно понимаю что в идеале так и нужно поступить и ценю Ваш ответ и так и буду в последствии вести работу. Но. В данном случае мне нужно построить именно такой отчёт как я описал. В нём грубо говоря будут жить списанные, проданные и закрытые основные средства, а именно такие данные: Отчет с __ по __
Ни каких хотелок в данном случае не возникнет
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов |
|
10.05.2011, 13:10 | #10 |
Ищущий знания...
|
Хотелось бы подитожить и добавить от себя.
1. Всегда используй шаблоны Excel (как советует Владимир Максимов). Это по максимуму избавит тебя от проблем рисования в Excel из аксапты. 2. Если нужно добавить какую либо функцию в аксапте, которая будет что то делать в Excel, но ты не знаешь какой код написать, то макрос тебе поможет увидеть те методы, которые тебе необходимо дернуть в Excel. (как советует S.Kuskov и Владимир Максимов). 3. Напиши (ну или попроси у кого нибудь, может бесплатно дадут ) обертку (класс или иерархию классов, в которых будут содержаться методы для работы с объектом Excel) для выгрузки данных в Excel по шаблонам. Пусть ты сейчас потратишь больше времени, за то в будущем экспорт данных будет занимать минимум времени.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.05.2011, 13:13 | #11 |
Ищущий знания...
|
Неправильный ход мыслей
Хотелки возникнут после первого осмысления отчета пользователем (ну или второго, или третьего, не важно ), в 90% случаев именно так и случается!
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.05.2011, 13:16 | #12 |
Участник
|
А еще, если у автора действительно решение Retail и не очень старое, то там уже есть иерархия классов для вывода excel-отчетов через шаблоны
__________________
Ivanhoe as is.. |
|
10.05.2011, 13:17 | #13 |
MS Dynamics AX 2012 R3
|
Не возникнет хотелок
100% Если я позднее буду строить отчёты, то буду их делать именно по шаблонам) В данном случае мне нужно научиться делать как я описал.
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов |
|
10.05.2011, 13:28 | #14 |
MS Dynamics AX 2012 R3
|
Цитата:
Только я уже давно не работаю у того клиента, у кого было решение от Корус Консалтинг Из группы клиентов я вышел
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов Последний раз редактировалось ZornFire; 10.05.2011 в 13:55. |
|
10.05.2011, 13:33 | #15 |
MS Dynamics AX 2012 R3
|
Я так и сделаю
__________________
"Человек человеку волк, а зомби зомби зомби." (с) С Уважением, Алексей Кабанов |
|
|
За это сообщение автора поблагодарили: S.Kuskov (0). |
11.05.2011, 11:53 | #16 |
Участник
|
Еще один вариант релизовать форматирование отчета - записать требуемый макрос, сохранить файл с этим макросом как шаблон, использовать этот шаблон для создания файла, а после завершения вывода данных вызвать этот макрос с помощью метода Run COM-объекта Excel.
|
|