|  14.01.2015, 12:02 | #41 | 
| Участник |    Если данный код запустить в клиентском режиме - работает, как только переключаю класс в серверный - аксапта вылетает. Причем если вместо array вставлять обычную строку все нормально работает X++:     SysExcelApplication_NET     sysExcelApplication;
    SysExcelWorksheet_NET       sysExcelWorksheet;
    SysExcelRange_NET           range;
    System.Array                array;
    System.Type                 type;
    ;
    new InteropPermission( InteropKind::ClrInterop ).assert();
    // BP deviation documented
    sysExcelApplication = SysExcelApplication_NET::construct();
    sysExcelApplication.visible(true);
    sysExcelApplication.workbooks().add("");
    sysExcelWorksheet = sysExcelApplication.worksheets().itemFromNum(1);
    type = System.Type::GetType('System.String');
    array = System.Array::CreateInstance(type, 2);
    array.SetValue(CLRInterop::getObjectForAnyType("AAA"), 0);
    array.SetValue(CLRInterop::getObjectForAnyType("БББ"), 1);
    range = sysExcelWorksheet.range("A1:B1");
    range.value2(array); // !!!! здесь вылетает Axapta | 
|  | 
|  14.01.2015, 13:33 | #42 | 
| Участник | 
			
			С какой ошибкой вылетает ? AifUtil::getClrErrorMessage() что говорит ? Я кстати CLRInterop::getObjectForAnyType("AAA") не использую, вставляю значение (строковое, числовое и т.д.) без конвертирования. Работает и в пакетном и в обычном режиме. 
				__________________ Дмитрий Последний раз редактировалось Damn; 14.01.2015 в 13:37. | 
|  | 
|  14.01.2015, 14:28 | #43 | 
| Участник | 
			
			Вылетает с стандартной критической ошибкой (Приложение выполнело недопустимую операцию и будет закрыто, отправить отчет в microsoft или запустить дебагер и т.д.), до catch не доходит. В Событиях операционки ничего не говорящее сообщение  Faulting application name: Ax32.exe, version: 5.0.1600.2596, time stamp: 0x53171f5d Faulting module name: Ax32.exe, version: 5.0.1600.2596, time stamp: 0x53171f5d Exception code: 0xc0000005 Fault offset: 0x001dbf2f Faulting process id: 0x1b78 Faulting application start time: 0x01d02fec081571f8 Faulting application path: C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\Ax32.exe Faulting module path: C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\Ax32.exe Report Id: 8818c4b7-9bdf-11e4-80ea-0050569a5ddc Faulting package full name: Faulting package-relative application ID: CLRInterop::getObjectForAnyType - убрал, но ситуацию не спасает (( Procmon.exe - тоже толком ничего не выдает, отказ на доступ к файлам/папкам не заметил. Office 2013. Интересно у кого-нибудь данный код не вышибает Аксапту? Последний раз редактировалось ex3em; 14.01.2015 в 14:36. | 
|  | 
|  14.01.2015, 14:57 | #44 | 
| Участник | 
			
			Я понял, у вас ошибка возникает в клиентской части аксапты и именно в том случае когда у класса стоит RunOn = Server.  У меня у класса стоит RunOn = CalledFrom и я отправляю его в пакетный режим. На сервере ошибка не возникает. Выставлять RunOn = Server я не пробовал, в моём случае нет такой необходимости. 
				__________________ Дмитрий | 
|  | 
|  14.01.2015, 15:09 | #45 | 
| Участник | 
			
			Без конвертирования где, в 2009-й? В 2012-й попробуйте так сделать с датами в пакетном режиме    | 
|  | 
|  14.01.2015, 15:27 | #46 | 
| Участник | 
			
			Да, в Ax2009. Конвертирую в строку я только два типа - utcDateTime и enum, остальное всё идёт без конвертации. В Ax2012 пока не успел попробовать.
		 
				__________________ Дмитрий | 
|  | 
|  14.01.2015, 15:39 | #47 | 
| Участник | 
			
			Ax2009
		 Последний раз редактировалось ex3em; 14.01.2015 в 15:41. | 
|  | 
|  05.05.2015, 17:49 | #48 | 
| Участник | 
			
			А есть факты, свидетельствующие что из приведенного в начале поста проекта метод  \Classes\SysExcelWorksheet_NET\pasteSpecial() может работать на сервере ? Мне вот как то не удалось заставить   
				__________________ любитель портвейна и снов с прокисшей капустой в усах | 
|  | 
|  05.05.2015, 19:51 | #49 | 
| Участник | 
			
			pasteSpecial - не пробовали. А зачем ? Когда можно в range явно массив за раз вставить. А в буфер обмена вы данные чем положили ? Случайно не TextBuffer классом ? Если не ошибаюсь на сервер он не должен работать - в ядре заглушка стоит. | 
|  | 
|  12.01.2016, 11:41 | #50 | 
| MCITP |   Цитата: 
		
			Сообщение от gl00mie
			   Я недавно задействовал эти классы на 2012-й, поменял пару-тройку мест в коде, к которым с подозрением отнесся компилятор (вроде замены SysDictClass::is() на is и приведения anytype к Object перед использованием его в контексте, где предполагается ссылочный тип данных) - все работает, косяки работы с Excel через COM, которые полезли и в 2012-й, задушены на корню. Ах, да: чтобы все это хозяйство работало в CIL, разумеется, надо перебить свойство RunOn у классов SysExcel*, потому что по умолчанию они все выполняются на клиенте. 
				__________________ Zhirenkov Vitaly | 
|  | 
|  12.01.2016, 11:47 | #51 | 
| MCITP | 
			
			В частности интересует реализация SysExcelValidation_NET.add()
		 
				__________________ Zhirenkov Vitaly | 
|  | 
|  12.01.2016, 17:57 | #52 | 
| MCITP |   Цитата: Причём есть необходимость именно в шаблонах 2007. Кто-нибудь это обходил? 
				__________________ Zhirenkov Vitaly | 
|  | 
|  13.01.2016, 08:59 | #53 | 
| Участник | 
			
			Если вы о версии 2012, то если я ничего не путаю, там надо использовать не шаблон Excel в качестве файла шаблона, а просто файл Excel. тогда такой ошибки не будет
		 | 
|  | 
|  13.01.2016, 11:46 | #54 | 
| MCITP |   
			
			У нас и есть обычный файл, в 2007м формате, .xlsx.
		 
				__________________ Zhirenkov Vitaly | 
|  | 
|  25.01.2016, 19:39 | #55 | 
| Участник | 
			
			а какие версии драйвера доступа к данным установлены на клиенте и сервере? должны быть 32bit для клиента и 64 -- для сервера.
		 
				__________________ Felix nihil admirari | 
|  | 
|  26.01.2016, 15:53 | #56 | 
| Иван Захаров | 
			
			>При открытии шаблона через workBooks_net у меня возникает сообщение, что файл был восстановлен. С чем это может быть связано? Удалите свойства файла как описано здесь ... https://support.office.com/en-us/art...2-686cc64b6949 | 
|  | |
| За это сообщение автора поблагодарили: gl00mie (2), IvanS (1). | |
|  27.01.2016, 18:53 | #57 | 
| MCITP |   
			
			это всё не о том... ларчик на самом деле был зарыт в том, что надо открывать xlsx файлы методом workbooks.OpenXML(), а не просто open(). 
				__________________ Zhirenkov Vitaly | 
|  | |
| За это сообщение автора поблагодарили: gl00mie (2). | |
|  29.09.2016, 21:35 | #58 | 
| Участник | 
			
			В качестве апа. Есть проблема открытия файла Excel в пакетнике. АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки. При чем никаких уведомлений не выдается как в АХ, так и Windows. try catch Exception::CLRError тоже ничего не перехватывает. А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает. Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше | 
|  | 
|  29.09.2016, 21:39 | #59 | 
| Участник | Цитата: 
		
			Сообщение от IvanS
			   В качестве апа. Есть проблема открытия файла Excel в пакетнике. АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки. При чем никаких уведомлений не выдается как в АХ, так и Windows. try catch Exception::CLRError тоже ничего не перехватывает. А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает. Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше установить рядом 64-разрядную сестру можно только в "тихом" режиме Excel version To work well with Excel we need to have ODBC Excel 64 bit driver installed on the server http://www.microsoft.com/en-us/downl....aspx?id=13255 cmd (as administrator) AccessDatabaseEngine_x64 /passive 
				__________________ Felix nihil admirari | 
|  | 
|  29.09.2016, 21:57 | #60 | 
| Участник | Цитата: 
		
			Сообщение от wojzeh
			   пакетник всегда крутится на сервере, соответственно должна стоять правильная компонента доступа - 64-разрядная. если аос крутится на той же машине, что и клиент, то скорее всего на ней уже установлена 32-разрядная версия.  установить рядом 64-разрядную сестру можно только в "тихом" режиме Excel version To work well with Excel we need to have ODBC Excel 64 bit driver installed on the server http://www.microsoft.com/en-us/downl....aspx?id=13255 cmd (as administrator) AccessDatabaseEngine_x64 /passive | 
|  | 
| Теги | 
| .net, ax2009, excel, законченный пример, полезное | 
|  | 
| 
 |