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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.10.2012, 19:08   #1  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
DAX 2012: пакетная обработка, экспорт в Excel
Всем привет.

Dynamics AX 2012 RTM.

Требуется сделать некий отчет в Excel формате, причем исполняемый в пакете с заданной периодичностью.

Cтандартные SysExcel* классы на сервере не пойдут из-за явно указанного на них RunAs=Client.

Однако, стандартные классы выдают отчет точно как требуется по ТЗ, что есть очень удобно для конечного пользователя и для меня, как разработчика. И вот я пытаюсь запустить пакетную обработку на клиенте, как это можно было делать в предыдущих версиях.

А старая добрая форма "Batch processing" наотрез отказывается находить мои пакеты, которые так и остаются в статусе Waiting. Похоже на то, что она ищет только пакеты со статусом Ready. Поиск по перекрестным ссылкам ответа не дал: впечатление такое, что статус Ready устанавливается только для серверных пакетов, и форма эта в принципе работать не может.

Кто-нибудь решал подобную проблему? Любые мысли на эту тему приветствуются.

Спасибо
Старый 29.10.2012, 21:02   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Решали это "проблему" в 2009-й перебивкой свойства RunOn и вытиранием модификатора client в construct() - какой <censored> и зачем так старательно привязал это семейство к клиенту, непонятно....
За это сообщение автора поблагодарили: Stitch_MS (2).
Старый 29.10.2012, 22:44   #3  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
R2 глюковат, а про RTM, вообще наверное стоит легенды складывать, переходите на R2.
__________________
Axapta book for developer
Старый 30.10.2012, 12:11   #4  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
Сообщение от MikeR Посмотреть сообщение
R2 глюковат, а про RTM, вообще наверное стоит легенды складывать, переходите на R2.
Я на партнере работаю. На какую амбразуру бросят, там и воюю .
Старый 30.10.2012, 12:40   #5  
Eohaid Bress mac Elatha is offline
Eohaid Bress mac Elatha
Участник
 
2 / 14 (1) ++
Регистрация: 18.10.2007
Адрес: г. Железнодорожный, М.О.
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Всем привет.

Dynamics AX 2012 RTM.

Требуется сделать некий отчет в Excel формате, причем исполняемый в пакете с заданной периодичностью.

Cтандартные SysExcel* классы на сервере не пойдут из-за явно указанного на них RunAs=Client.

Однако, стандартные классы выдают отчет точно как требуется по ТЗ, что есть очень удобно для конечного пользователя и для меня, как разработчика. И вот я пытаюсь запустить пакетную обработку на клиенте, как это можно было делать в предыдущих версиях.

А старая добрая форма "Batch processing" наотрез отказывается находить мои пакеты, которые так и остаются в статусе Waiting. Похоже на то, что она ищет только пакеты со статусом Ready. Поиск по перекрестным ссылкам ответа не дал: впечатление такое, что статус Ready устанавливается только для серверных пакетов, и форма эта в принципе работать не может.

Кто-нибудь решал подобную проблему? Любые мысли на эту тему приветствуются.

Спасибо
В AX2009 работает старая добрая форма "Batch processing...", только пакеты запускаются немного через <censored>. По умолчанию все пакеты (не зависимо от Call From) отрабатывают на сервере. Чтобы они отработали на "клиенте" нужно в пакетном задании (Основное / Запросы / Пакетные задания -> Просмотр задач) поменять значения поля "Запустить из местоположение" с "Сервер" на "Клиент". В данном случае сервер обработки пакетных заданий будет пропускать данным "пакет" и направлять его на "клиента", т.е. к старой доброй форме.
За это сообщение автора поблагодарили: Stitch_MS (2), Veter (1), sparco (1).
Старый 31.10.2012, 18:21   #6  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Класс работы с Excel переделал под серверный, и не парюсь, в пакете или нет, есть Excel на стороне клиента или нет, зашибись !!!
Старый 02.11.2012, 00:58   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kair84 Посмотреть сообщение
Класс работы с Excel переделал под серверный, и не парюсь, в пакете или нет, есть Excel на стороне клиента или нет, зашибись !!!
Может быть поэтому его старательно и сделали клиентским.
Чтобы на каждой клиентской тачке стояла Excel для работы. А то все такие умные будут юзать Excel c АОСа.
Старый 03.11.2012, 15:19   #8  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Конечно для этого!!!
Если у вас например 100 клиентских мест, купите 100 лицензий MS Office, и получите +10 маны от мелкомягких !!!

ЗЫ: С екселем, мне как разработчику, удобно работать в плане загрузки/выгрузки данных, и всего прочего. Но для просмотра отчета, печати или др. работы конечному юзеру, совсем не обязательно (хотя и приветствуется) наличие онного, для работы с xls файлами
Старый 17.09.2013, 11:40   #9  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Цитата:
Сообщение от kair84 Посмотреть сообщение
Класс работы с Excel переделал под серверный, и не парюсь, в пакете или нет, есть Excel на стороне клиента или нет, зашибись !!!
Попробовал сделать тоже самое. В методах client заменил на server. Сейчас ругается вот в этом вот месте.
X++:
#define.ExcelProgId("Excel.Application")
protected void newCom()
{
    //BP deviation documented
    m_comApplication = new COM(#ExcelProgId);
}
Сначала на сервере не стоят Excel. Поставил на него Excel 10и все равно ошибка.
Сообщение (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  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
При выполнение на сервере надо не забыть про 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  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Предложенный Вами вариант не помог. Но поместил 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();
}
Сообщение (13:26:39)
Метод "pasteSpecial" в COM-объекте класса "_Worksheet" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Метод PasteSpecial из класса Worksheet завершен неверно.

Последний раз редактировалось smailik; 17.09.2013 в 13:35.
Старый 17.09.2013, 13:32   #12  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Цитата:
Сообщение от smailik Посмотреть сообщение
Не помогло.
О методе run какого класса вы говорите?
Об этом: (S)\Classes\Sma_ReportToPAY\run - line 5
За это сообщение автора поблагодарили: smailik (1).
Старый 17.09.2013, 13:58   #13  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Почитал форум и пришел к выводу, что это проблемы буфера обмена, так как работаю я на терминале. Буду искать как его побороть.
Старый 17.09.2013, 13:59   #14  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Об этом: (S)\Classes\Sma_ReportToPAY\run - line 5
Я сначала затупил, а потом так и понял. Спасибо
Старый 17.09.2013, 14:07   #15  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Посмотрите вот эту ветку, думаю нечто подобное в вашем случае происходит Ошибка вставки из textBuffer в Excel
Старый 17.09.2013, 15:44   #16  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Спасибо за ссылку. Почитал. Перепроверил классы у всех Run on Server. Думаю проблема с буфером обмена. Работаю через терминал и там порой не срабатывает Ctrl+V и Ctrl+C

Последний раз редактировалось smailik; 17.09.2013 в 16:30.
Теги
excel, пакетная обработка, ax2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dax-lessons: SysExcelWorksheetHelper and SysExcelHelper classes in AX 2012–Quickly create excel [X++] Blog bot DAX Blogs 0 24.04.2012 21:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
emeadaxsupport: Microsoft Dynamics AX 2012 Office Addins tab does not appear in Microsoft Excel 2007 or Word 2007 on a 64bit Windows system Blog bot DAX Blogs 0 25.02.2012 05:42
dynamics-ax: Microsoft Dynamics AX 2012 Excel Add-in Blog bot DAX Blogs 0 08.06.2011 08:12
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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