| 
			
			 | 
		#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 | 
| 
	
 | 
| 
			
			 | 
		#42 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			С какой ошибкой вылетает ? AifUtil::getClrErrorMessage() что говорит ? 
		
		
		
		
		
		
			Я кстати CLRInterop::getObjectForAnyType("AAA") не использую, вставляю значение (строковое, числовое и т.д.) без конвертирования. Работает и в пакетном и в обычном режиме. 
				__________________ 
		
		
		
		
		
			Дмитрий Последний раз редактировалось Damn; 14.01.2015 в 13:37.  | 
| 
	
 | 
| 
			
			 | 
		#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.  | 
| 
	
 | 
| 
			
			 | 
		#44 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я понял, у вас ошибка возникает в клиентской части аксапты и именно в том случае когда у класса стоит RunOn = Server.  
		
		
		
		
		
		
			У меня у класса стоит RunOn = CalledFrom и я отправляю его в пакетный режим. На сервере ошибка не возникает. Выставлять RunOn = Server я не пробовал, в моём случае нет такой необходимости. 
				__________________ 
		
		
		
		
	Дмитрий  | 
| 
	
 | 
| 
			
			 | 
		#45 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Без конвертирования где, в 2009-й? В 2012-й попробуйте так сделать с датами в пакетном режиме  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#46 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, в Ax2009. Конвертирую в строку я только два типа - utcDateTime и enum, остальное всё идёт без конвертации. В Ax2012 пока не успел попробовать.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Дмитрий  | 
| 
	
 | 
| 
			
			 | 
		#47 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ax2009
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось ex3em; 14.01.2015 в 15:41.  | 
| 
	
 | 
| 
			
			 | 
		#48 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А есть факты, свидетельствующие что из приведенного в начале поста проекта метод  
		
		
		
		
		
		
			\Classes\SysExcelWorksheet_NET\pasteSpecial() может работать на сервере ? Мне вот как то не удалось заставить  
		
				__________________ 
		
		
		
		
	любитель портвейна и снов с прокисшей капустой в усах  | 
| 
	
 | 
| 
			
			 | 
		#49 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			pasteSpecial - не пробовали. 
		
		
		
		
		
		
		
	А зачем ? Когда можно в range явно массив за раз вставить. А в буфер обмена вы данные чем положили ? Случайно не TextBuffer классом ? Если не ошибаюсь на сервер он не должен работать - в ядре заглушка стоит.  | 
| 
	
 | 
| 
			
			 | 
		#50 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 Цитата: 
	
		
			Сообщение от gl00mie
			 
 
			Я недавно задействовал эти классы на 2012-й, поменял пару-тройку мест в коде, к которым с подозрением отнесся компилятор (вроде замены SysDictClass::is() на is и приведения anytype к Object перед использованием его в контексте, где предполагается ссылочный тип данных) - все работает, косяки работы с Excel через COM, которые полезли и в 2012-й, задушены на корню. 
		
	Ах, да: чтобы все это хозяйство работало в CIL, разумеется, надо перебить свойство RunOn у классов SysExcel*, потому что по умолчанию они все выполняются на клиенте. 
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
| 
			
			 | 
		#51 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В частности интересует реализация SysExcelValidation_NET.add()
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
| 
			
			 | 
		#52 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 Цитата: 
	
Причём есть необходимость именно в шаблонах 2007. Кто-нибудь это обходил? 
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
| 
			
			 | 
		#53 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если вы о версии 2012, то если я ничего не путаю, там надо использовать не шаблон Excel в качестве файла шаблона, а просто файл Excel. тогда такой ошибки не будет
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#54 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 
			
			У нас и есть обычный файл, в 2007м формате, .xlsx.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
| 
			
			 | 
		#55 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а какие версии драйвера доступа к данным установлены на клиенте и сервере? должны быть 32bit для клиента и 64 -- для сервера.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Felix nihil admirari  | 
| 
	
 | 
| 
			
			 | 
		#56 | 
| 
			
			 Иван Захаров 
		
			
	 | 
	
	
	
		
		
		
		 
			
			>При открытии шаблона через workBooks_net у меня возникает сообщение, что файл был восстановлен. С чем это может быть связано? 
		
		
		
		
		
		
		
	Удалите свойства файла как описано здесь ... https://support.office.com/en-us/art...2-686cc64b6949  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: gl00mie (2), IvanS (1). | |
| 
			
			 | 
		#57 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 
			
			это всё не о том... 
		
		
		
		
		
		
			ларчик на самом деле был зарыт в том, что надо открывать xlsx файлы методом workbooks.OpenXML(), а не просто open(). 
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: gl00mie (2). | |
| 
			
			 | 
		#58 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В качестве апа. 
		
		
		
		
		
		
		
	Есть проблема открытия файла Excel в пакетнике. АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки. При чем никаких уведомлений не выдается как в АХ, так и Windows. try catch Exception::CLRError тоже ничего не перехватывает. А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает. Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше  | 
| 
	
 | 
| 
			
			 | 
		#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  | 
| 
	
 | 
| 
			
			 | 
		#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, законченный пример, полезное | 
| 
	
	 | 
	
		
		
  |