|
05.09.2011, 18:01 | #1 |
Участник
|
Подводный камень только один: решить, когда создавать 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 ); } // ... |
|
08.10.2012, 09:41 | #2 |
Участник
|
Цитата:
Сообщение от 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 ); } // ... Права на шаблон у учетки АОСа FullControl. |
|
08.10.2012, 11:17 | #3 |
Участник
|
Нашел решение в интернете.
Решение: для 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, законченный пример, полезное |
|
|