22.01.2012, 18:19 | #1 |
Участник
|
Win2008 и вызов методов COM-объектов
Продолжение темы Новые счет-фактура и его друзья - Постановление от 26 декабря 2011 г. N 1137
Насчет ComDispFunction - я уже писал, что с помощью этого класса вызовы методов COM-классов происходят без ошибок. По-моему, при этом применяется раннее связывание Насчет ООП - вспоните, что класс Com в аксапте это точно такой же класс, как и любой другой и что от него можно создавать наследников. Так же вспоните, что у этого класса есть замечательный метод attach(), позволяющий подключить к созданному экземпляру класса уже существующий COM-класс Еще вспомните про то, что можно перекрывать методы и создавать в них собственный код. В общем, идея была такая - необходимо создать иерархию классов, наследующих от класса Com и соотвествующую иерархии вызываемых COM-объектов. В метод new() классов иерархии передавать ссылку на созданный COM-объект и с помощью вызова метода attach() создавать привязку Перекрыть вызываемые методы COM-объекта. Внутри этих методов делать вызов с помощью класса ComDispFunction Если вызываемый метод возвращает ссылку на другой COM-объект, то возвращать ссылку на экземпляра класса иерархии, в вызов new() которого передавать COM-объект В результате, для корректной работы, требется изменить вызов первоначального создания COM-объекта в Аксапте на создание соответствующей класса из иерархии с передачей в него COM-объекта Для Excel это будет выглядеть примерно так X++: COM excel; ; excel = new DEV_ExcelApplication(new Com('Excel.Application')); X++: public SysExcelCell item(int _row, int _column) { return SysExcelCell::construct(version,cells.item(_row,_column)); // return SysExcelCell::construct(version,COM::createFromVariant(cells.item(_row,_column))); } Ну и в качестве иллюстрации - во вложении пример иерарихии из нескольких классов, реализующий вышеизложенный подход для Excel (в чисто иллюстративных целях). Замечу, что с помощью подобной иерархии и небольших изменения в классе COMExcelDocument_RU делается выгрузка в Excel на терминальном сервере под 2008R2, на котором тусуется под сотню пользователей, а загрузка процессоров редко опускается ниже 70%, а зачастую составляет все сто Кстати, ко всему прочему, вызовы методов еще и быстрее выполняются
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: raz (15), belugin (3), ZVV (7), sukhanchik (10), Bishop (3), Logger (15), Ace of Database (10), lev (13), MikeR (3), gl00mie (10), Максимка (1), S.Kuskov (10), pedrozzz (4), БАХ43 (1). |
Теги |
com-объект, excel, excel com формат, windows server 2008 |
|
|