29.10.2012, 19:08 | #1 |
Участник
|
DAX 2012: пакетная обработка, экспорт в Excel
Всем привет.
Dynamics AX 2012 RTM. Требуется сделать некий отчет в Excel формате, причем исполняемый в пакете с заданной периодичностью. Cтандартные SysExcel* классы на сервере не пойдут из-за явно указанного на них RunAs=Client. Однако, стандартные классы выдают отчет точно как требуется по ТЗ, что есть очень удобно для конечного пользователя и для меня, как разработчика. И вот я пытаюсь запустить пакетную обработку на клиенте, как это можно было делать в предыдущих версиях. А старая добрая форма "Batch processing" наотрез отказывается находить мои пакеты, которые так и остаются в статусе Waiting. Похоже на то, что она ищет только пакеты со статусом Ready. Поиск по перекрестным ссылкам ответа не дал: впечатление такое, что статус Ready устанавливается только для серверных пакетов, и форма эта в принципе работать не может. Кто-нибудь решал подобную проблему? Любые мысли на эту тему приветствуются. Спасибо |
|
29.10.2012, 21:02 | #2 |
Участник
|
Решали это "проблему" в 2009-й перебивкой свойства RunOn и вытиранием модификатора client в construct() - какой <censored> и зачем так старательно привязал это семейство к клиенту, непонятно....
|
|
|
За это сообщение автора поблагодарили: Stitch_MS (2). |
29.10.2012, 22:44 | #3 |
MCT
|
R2 глюковат, а про RTM, вообще наверное стоит легенды складывать, переходите на R2.
__________________
Axapta book for developer |
|
30.10.2012, 12:11 | #4 |
Участник
|
|
|
30.10.2012, 12:40 | #5 |
Участник
|
Цитата:
Сообщение от Stitch_MS
Всем привет.
Dynamics AX 2012 RTM. Требуется сделать некий отчет в Excel формате, причем исполняемый в пакете с заданной периодичностью. Cтандартные SysExcel* классы на сервере не пойдут из-за явно указанного на них RunAs=Client. Однако, стандартные классы выдают отчет точно как требуется по ТЗ, что есть очень удобно для конечного пользователя и для меня, как разработчика. И вот я пытаюсь запустить пакетную обработку на клиенте, как это можно было делать в предыдущих версиях. А старая добрая форма "Batch processing" наотрез отказывается находить мои пакеты, которые так и остаются в статусе Waiting. Похоже на то, что она ищет только пакеты со статусом Ready. Поиск по перекрестным ссылкам ответа не дал: впечатление такое, что статус Ready устанавливается только для серверных пакетов, и форма эта в принципе работать не может. Кто-нибудь решал подобную проблему? Любые мысли на эту тему приветствуются. Спасибо |
|
|
За это сообщение автора поблагодарили: Stitch_MS (2), Veter (1), sparco (1). |
31.10.2012, 18:21 | #6 |
Участник
|
Класс работы с Excel переделал под серверный, и не парюсь, в пакете или нет, есть Excel на стороне клиента или нет, зашибись !!!
|
|
02.11.2012, 00:58 | #7 |
Участник
|
Цитата:
Чтобы на каждой клиентской тачке стояла Excel для работы. А то все такие умные будут юзать Excel c АОСа. |
|
03.11.2012, 15:19 | #8 |
Участник
|
Конечно для этого!!!
Если у вас например 100 клиентских мест, купите 100 лицензий MS Office, и получите +10 маны от мелкомягких !!! ЗЫ: С екселем, мне как разработчику, удобно работать в плане загрузки/выгрузки данных, и всего прочего. Но для просмотра отчета, печати или др. работы конечному юзеру, совсем не обязательно (хотя и приветствуется) наличие онного, для работы с xls файлами |
|
17.09.2013, 11:40 | #9 |
Участник
|
Цитата:
X++: #define.ExcelProgId("Excel.Application") protected void newCom() { //BP deviation documented m_comApplication = new COM(#ExcelProgId); } Сообщение (11:31:31) Сбой запроса на разрешение типа "InteropPermission". (S)\Classes\InteropPermission\demand (S)\Classes\COM\new (S)\Classes\ComExcelDocument_RU\newCom - line 5 (S)\Classes\ComOfficeDocument_RU\initApplication - line 10 (S)\Classes\ComOfficeDocument_RU\newFile - line 8 (S)\Classes\Sma_ReportToPAY\makeDocument - line 5 (S)\Classes\Sma_ReportToPAY\run - line 5 (S)\Classes\Sma_ReportToPAY\main - line 8 Объект "COM" не может быть создан Может дело в 10 офисе? |
|
17.09.2013, 11:53 | #10 |
Участник
|
При выполнение на сервере надо не забыть про Code Access Security
Попробуйте так: X++: #define.ExcelProgId("Excel.Application") protected void newCom() { interopPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); //BP deviation documented m_comApplication = new COM(#ExcelProgId); } а лучше поместите InteropPermission в метод run ну и ссылка на MSDN: http://msdn.microsoft.com/en-US/libr...(v=ax.50).aspx Последний раз редактировалось handy-comp; 17.09.2013 в 12:07. |
|
17.09.2013, 13:17 | #11 |
Участник
|
Предложенный Вами вариант не помог. Но поместил interopPermission в run и ошибка пропала.
Вот только теперь ругается на другое место. X++: void pasteFromBufferToRange(TextBuffer txtb, str _bookMark,int _workSheet = 1) { COM comRange, comWorkSheet; TextBuffer saveClipboard = new TextBuffer(); ; saveClipboard.fromClipboard(); txtb.toClipboard(); comRange = this.findRange(_bookMark, _workSheet); comRange.select(); comWorkSheet = this.getWorkSheet(_workSheet); if (comWorkSheet) { comWorkSheet.pasteSpecial(1); // вот тут вот ругается } saveClipboard.toClipboard(); } Метод "pasteSpecial" в COM-объекте класса "_Worksheet" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Метод PasteSpecial из класса Worksheet завершен неверно. Последний раз редактировалось smailik; 17.09.2013 в 13:35. |
|
17.09.2013, 13:32 | #12 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: smailik (1). |
17.09.2013, 13:58 | #13 |
Участник
|
Почитал форум и пришел к выводу, что это проблемы буфера обмена, так как работаю я на терминале. Буду искать как его побороть.
|
|
17.09.2013, 13:59 | #14 |
Участник
|
|
|
17.09.2013, 14:07 | #15 |
Участник
|
Посмотрите вот эту ветку, думаю нечто подобное в вашем случае происходит Ошибка вставки из textBuffer в Excel
|
|
17.09.2013, 15:44 | #16 |
Участник
|
Спасибо за ссылку. Почитал. Перепроверил классы у всех Run on Server. Думаю проблема с буфером обмена. Работаю через терминал и там порой не срабатывает Ctrl+V и Ctrl+C
Последний раз редактировалось smailik; 17.09.2013 в 16:30. |
|
Теги |
excel, пакетная обработка, ax2012 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|