02.03.2011, 14:12 | #14 |
Участник
|
Цитата:
Сообщение от AndreyStar
Тоже столкнулись с этой проблемой, идея сделать как в российском функционале, с макросами на try catch очень не понравилась, да и объем переписывания немалый
Проблема возникала только на системах с Win7, XP + Office 2010 + dax 2009 работало без проблем Когда искал причину, увидел что в других языках обращения к COM компилируются с атрибутом [STAThread] - однопоточное исполнение, ну и появилась мысль что многопоточность Win7 мешает жить. Попытка запустить dax2009 в режиме совместимости чуть улучшила ситуацию, но проблему не решила и тогда пришла идея запустить класс экспорта в отдельном потоке, и все заработало Сейчас все протестировано в разных связках, в том числе и в 64-битной системе, все работает, и переписывать нужно только способ запуска класса Запускаем импорт из екселя, например, так X++: thread thread = new thread(); thread.setInputParm(["Т000081968", "c:\text.xlsx"]); // какие то параметры thread.run(classnum(TetImportClass), identifierstr(importFromExcel)); X++: static client void importFromExcel(thread _thread) ComExcelDocument_RU document = new ComExcelDocument_RU(); str path; str parm; ; [parm, path] = _thread.getInputParm(); document.open(path, false); ..... .... Какое никакое, но все же решение. Только теперь ряд других проблем имеется, например перехват ошибок и вывод их на экран - не тривиальная задача. Но решаемая. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
Теги |
com-объект, excel, thread, асинхронный com, ошибка |
|
|