|
02.04.2014, 13:03 | #1 |
Участник
|
Я недавно задействовал эти классы на 2012-й, поменял пару-тройку мест в коде, к которым с подозрением отнесся компилятор (вроде замены SysDictClass::is() на is и приведения anytype к Object перед использованием его в контексте, где предполагается ссылочный тип данных) - все работает, косяки работы с Excel через COM, которые полезли и в 2012-й, задушены на корню.
Ах, да: чтобы все это хозяйство работало в CIL, разумеется, надо перебить свойство RunOn у классов SysExcel*, потому что по умолчанию они все выполняются на клиенте. Последний раз редактировалось gl00mie; 02.04.2014 в 13:06. |
|
02.04.2014, 13:06 | #2 |
Участник
|
Цитата:
Сообщение от gl00mie
Я недавно задействовал эти классы на 2012-й, поменял пару-тройку мест в коде, к которым с подозрением отнесся компилятор (вроде замены SysDictClass::is() на is и приведения anytype к Object перед использованием его в контексте, где предполагается ссылочный тип данных) - все работает, косяки работы с Excel через COM, которые полезли и в 2012-й, задушены на корню.
Ах, да: чтобы все это хозяйство работало в CIL, разумеется, надо перебить свойство RunOn у родительских классов SysExcel*, потому что по умолчанию они все выполняются на клиенте. |
|
05.12.2014, 11:01 | #3 |
Участник
|
При использовании Excel в пакетном режиме у меня процесс excel.exe остаётся в памяти, не удаляется. Причём при последующих запусках пакетного задания второй процесс появляется и затем удаляется, а первый так и остаётся висеть. У вас также ?
Windows 2012R2, Ax 2012 R3, Office 2013 X++: workbook = null; workbooks = null; excel = null; System.GC::Collect(); System.GC::WaitForPendingFinalizers();
__________________
Дмитрий |
|
12.01.2016, 11:41 | #4 |
MCITP
|
Цитата:
Сообщение от gl00mie
Я недавно задействовал эти классы на 2012-й, поменял пару-тройку мест в коде, к которым с подозрением отнесся компилятор (вроде замены SysDictClass::is() на is и приведения anytype к Object перед использованием его в контексте, где предполагается ссылочный тип данных) - все работает, косяки работы с Excel через COM, которые полезли и в 2012-й, задушены на корню.
Ах, да: чтобы все это хозяйство работало в CIL, разумеется, надо перебить свойство RunOn у классов SysExcel*, потому что по умолчанию они все выполняются на клиенте.
__________________
Zhirenkov Vitaly |
|
12.01.2016, 11:47 | #5 |
MCITP
|
В частности интересует реализация SysExcelValidation_NET.add()
__________________
Zhirenkov Vitaly |
|
02.04.2014, 13:21 | #6 |
Участник
|
Нет, до Union, к сожалению, руки не дошли - по правде сказать, я даже не проверял этот момент. У меня пока более приземленные интересы: чтобы импорт из Excel работал и не падал от любого чиха. К слову, в 2012-й выкинули импорт данных из "традиционных" шаблонов Excel, создаваемых мастером (в частности, классов SysDataExcelCOMWizard и SysDataExcelCOMPreview больше нет в стандартном приложении), а объединение ячеек штатно использовалось вроде только в сопутствующем классе SysDataExcelCOM, так что... решение проблемы актуально теперь лишь в случае, если объединение ячеек используется в каких-либо модификациях.
PS. Занятно, что сам класс SysDataExcelCOM в 2012-й остался - видимо, на случай, если он используется в каких-либо модификациях, поднимаемых с предыдущих версий. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
24.04.2014, 14:33 | #7 |
Участник
|
SysExcel_via_NET.rar
Поставил проект из архива, при компиляции возникли ошибки. DEV_AnyTypeUtil не является классом. DEV_ValueTypeConversionFlags на вот это ругается Класс Microsoft.Office.Interop.Excel.ListObject не содержит эту функцию. Класс Microsoft.Office.Interop.Excel.FormatConditions не содержит эту функцию. Кто может помогите проектиком с DEV_*. DEV_AnyTypeUtil и DEV_ValueTypeConversionFlags нашел. Теперь нужна таблица DEV_SysReleaseUpdateScriptsRef. Последний раз редактировалось smailik; 24.04.2014 в 14:40. |
|
24.04.2014, 20:53 | #8 |
Участник
|
если посмотреть, в каком контексте она упоминается, то станет ясно, что она не нужна - ее упоминание можно смело выкинуть. Про нее "знает" класс, который должен для записей некоторых таблиц возвращать более-менее вразумительные описания, но если про какие-то таблицы он знать не будет, на импорте из Excel это никак не скажется
|
|
25.04.2014, 09:30 | #9 |
Участник
|
Из-за её отсутствия у меня не компилируется класс DEV_Desc4, так как у него в методе getListOfFieldIds4Desc вот такой вот код
X++: case tablenum(DEV_SysReleaseUpdateScriptsRef) : ret.addEnd( fieldnum(DEV_SysReleaseUpdateScriptsRef, ClassId) ); ret.addEnd( fieldnum(DEV_SysReleaseUpdateScriptsRef, Method) ); break; |
|
25.04.2014, 09:49 | #10 |
Участник
|
Да-да, см. мое сообщение выше
|
|
14.01.2015, 14:57 | #11 |
Участник
|
Я понял, у вас ошибка возникает в клиентской части аксапты и именно в том случае когда у класса стоит RunOn = Server.
У меня у класса стоит RunOn = CalledFrom и я отправляю его в пакетный режим. На сервере ошибка не возникает. Выставлять RunOn = Server я не пробовал, в моём случае нет такой необходимости.
__________________
Дмитрий |
|
14.01.2015, 15:09 | #12 |
Участник
|
Без конвертирования где, в 2009-й? В 2012-й попробуйте так сделать с датами в пакетном режиме
|
|
14.01.2015, 15:27 | #13 |
Участник
|
Да, в Ax2009. Конвертирую в строку я только два типа - utcDateTime и enum, остальное всё идёт без конвертации. В Ax2012 пока не успел попробовать.
__________________
Дмитрий |
|
14.01.2015, 15:39 | #14 |
Участник
|
Ax2009
Последний раз редактировалось ex3em; 14.01.2015 в 15:41. |
|
05.05.2015, 17:49 | #15 |
Участник
|
А есть факты, свидетельствующие что из приведенного в начале поста проекта метод
\Classes\SysExcelWorksheet_NET\pasteSpecial() может работать на сервере ? Мне вот как то не удалось заставить
__________________
любитель портвейна и снов с прокисшей капустой в усах |
|
05.05.2015, 19:51 | #16 |
Участник
|
pasteSpecial - не пробовали.
А зачем ? Когда можно в range явно массив за раз вставить. А в буфер обмена вы данные чем положили ? Случайно не TextBuffer классом ? Если не ошибаюсь на сервер он не должен работать - в ядре заглушка стоит. |
|
13.01.2016, 08:59 | #17 |
Участник
|
Если вы о версии 2012, то если я ничего не путаю, там надо использовать не шаблон Excel в качестве файла шаблона, а просто файл Excel. тогда такой ошибки не будет
|
|
13.01.2016, 11:46 | #18 |
MCITP
|
У нас и есть обычный файл, в 2007м формате, .xlsx.
__________________
Zhirenkov Vitaly |
|
25.01.2016, 19:39 | #19 |
Участник
|
а какие версии драйвера доступа к данным установлены на клиенте и сервере? должны быть 32bit для клиента и 64 -- для сервера.
__________________
Felix nihil admirari |
|
29.09.2016, 21:35 | #20 |
Участник
|
В качестве апа.
Есть проблема открытия файла Excel в пакетнике. АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки. При чем никаких уведомлений не выдается как в АХ, так и Windows. try catch Exception::CLRError тоже ничего не перехватывает. А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает. Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше |
|
Теги |
.net, ax2009, excel, законченный пример, полезное |
|
|