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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.09.2011, 18:01   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Подводный камень только один: решить, когда создавать SysExcelApplication нужно все-таки именно на клиенте, поскольку один и тот же серверный код может работать как в пакете, так и интерактивно, и в последнем случае, очевидно, Excel должен запускаться на клиентской машине. Я это решил так:
X++:
public static client server SysExcelApplication_NET construct(ClassRunMode _contructOnTier = ClassRunMode::Client)
{
    SysExcelApplication_NET ret;
    ;
    switch (_contructOnTier)
    {
        case ClassRunMode::Called :
        case ClassRunMode::ClientOrServer :
            ret = new SysExcelApplication_NET();
            break;
        case ClassRunMode::Client :
            ret = classFactory::makeObjectOnClient( classnum(SysExcelApplication_NET) );
            break;
        case ClassRunMode::Server :
            ret = classFactory::makeObjectOnServer( classnum(SysExcelApplication_NET) );
            break;
        default :
            throw error( Error::unsupportedEnumValue( _contructOnTier ) );
    }
    return ret;
}
public static client server SysExcelApplication construct()
{
    SysExcelApplication     ret;
    COM                     excel;
    real                    excelVersion;
    ;
    if (SysExcel::mustInteropViaNET())
    {
        return SysExcelApplication_NET::construct( clientKind() == ClientType::Server ? ClassRunMode::Server : ClassRunMode::Client );
    }
    // ...
Запрос всех InteropPermission'ов для взаимодействия с CLR на сервере в модификации реализован, так что вызывающий код об этом может не заботиться.
Старый 08.10.2012, 09:41   #2  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Подводный камень только один: решить, когда создавать SysExcelApplication нужно все-таки именно на клиенте, поскольку один и тот же серверный код может работать как в пакете, так и интерактивно, и в последнем случае, очевидно, Excel должен запускаться на клиентской машине. Я это решил так:
X++:
public static client server SysExcelApplication_NET construct(ClassRunMode _contructOnTier = ClassRunMode::Client)
{
    SysExcelApplication_NET ret;
    ;
    switch (_contructOnTier)
    {
        case ClassRunMode::Called :
        case ClassRunMode::ClientOrServer :
            ret = new SysExcelApplication_NET();
            break;
        case ClassRunMode::Client :
            ret = classFactory::makeObjectOnClient( classnum(SysExcelApplication_NET) );
            break;
        case ClassRunMode::Server :
            ret = classFactory::makeObjectOnServer( classnum(SysExcelApplication_NET) );
            break;
        default :
            throw error( Error::unsupportedEnumValue( _contructOnTier ) );
    }
    return ret;
}
public static client server SysExcelApplication construct()
{
    SysExcelApplication     ret;
    COM                     excel;
    real                    excelVersion;
    ;
    if (SysExcel::mustInteropViaNET())
    {
        return SysExcelApplication_NET::construct( clientKind() == ClientType::Server ? ClassRunMode::Server : ClassRunMode::Client );
    }
    // ...
Запрос всех InteropPermission'ов для взаимодействия с CLR на сервере в модификации реализован, так что вызывающий код об этом может не заботиться.
При создании книги (workbook) из шаблона на сервере аксапта кидает Exception::ClrError. Что я делаю не так? Кстати если создавать книгу не из шаблона, то все отрабатывает корректно.
Права на шаблон у учетки АОСа FullControl.
Старый 08.10.2012, 11:17   #3  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Нашел решение в интернете.

Решение:
для Windows 2008 Server x64 создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop
для Windows 2008 Server x86 создать папку C:\Windows\System32\config\ systemprofile\Desktop


Я даже не знаю, что сказать на этот счет, у меня просто нет слов. Microsoft ***
Как я рад, что нашел это решение на 5-й странице поиска, с ужасом думаю что мог ее пролистать
За это сообщение автора поблагодарили: Logger (3), Denicce (2), propeller (1).
Теги
.net, ax2009, excel, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
проблема использования Excel через clr Batuev Artem DAX: Программирование 8 22.08.2011 18:01
AX.NET: интеграция .NET-приложений с Аксаптой и (будущие) возможности облачных вычислений gl00mie DAX: Программирование 2 23.04.2010 00:47
Импорт даты через Excel OliaM DAX: Функционал 2 13.12.2007 10:32
Экспорт в Excel через WorkBooks.OpenText() Владимир Максимов DAX: Программирование 2 09.04.2004 17:16
Чтение Excel-ячейки в Аксапте (2.5) через COM AKIS DAX: Программирование 3 25.03.2004 20:18

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.