![]() |
#1 |
Участник
|
![]()
Можно ли сделать такое? В отладчике Axapta или другими средствами.
В частности необъходимо узнать методы и парамеры Com объектов Excel, т.к. многих функций, которые есть в VB нет в COM'е. Спасибо. |
|
![]() |
#2 |
Участник
|
Есть очень удобная на мой взгляд вещь - мастер оболочек для COM объектов
|
|
![]() |
#3 |
Участник
|
Спасибо за совет.
Да, хорошая вещь, правда проблемы не решила: в классе Range есть функция, напимер IndentLevel, а при ее вызове Axapta ругается что такой функции нет! |
|
![]() |
#4 |
Участник
|
Не поленился, проверил - функция IndentLevel() нормально вызывается... Как аксапта то ругается?
|
|
![]() |
#5 |
Moderator
|
А свойства и методы обязательно смотеть средствами Аксапты ?
Вообще, вся информация о com объектах хранится в реестре ![]() ![]() Практически с любым средством разработки идет некий инструмент, позволяющий получить данную информацию: для MS Visual Studio - это OLE Viewer, в VB - это кажется называется Object Browser, Delphi - умеет генерить - tlb для любого com-объекта. Как правило, все эти средства позволяют получить гораздо больше информации о com-объекте, нежели из Аксапты. И еще небольшой совет - когда мне нужно написать что-то под Аксапту с использованием COM - я обычно сначала это делаю на одном из вышеописанных языках, а потом переношу работающее решение на X++. Может и тратится больше времени, зато в процессе разработки я получаю гораздо больший контроль над самой разработкой. |
|
![]() |
#6 |
Участник
|
То, что недоступны некоторые ф-ции - может быть глюк самого Excel, может версии. Действительно, Андре прав, проще сначала написать вызов на VB в самом Excel. Из Аксапты получать информацию о COM объектах сложно. Еще может быть засада, если разработка ведется на 3-х уровневой конфигурации. Компонента может быть зарегистрированна на клиенте, а вызываться на сервере...
|
|
![]() |
#7 |
Участник
|
Точно так и делаю - сначала записываю макрос, потом переношу код в Аксапту. но в 30% случаев выдаются ошибки о наличии таких функций у объекта.
|
|
![]() |
#8 |
Участник
|
Такое ощущение, что у Аксапты еще не отлажен механизм работы с COM-объетами - находится гдето на стадии бета-тестирования...
1 из 5 запусков вылетают ошибки о неправильных параметрах функций, хотя каждый раз они одни и те же. З.Ы. Может и правда Excel кривой стоит... |
|
![]() |
#9 |
Участник
|
![]() Не все йогурты одинаково полезны! на самом деле если функция реализована в самом VB, не обязательно, что она работает через COM. Макроса будет недостаточно. Попробуй создать в VB именно COM объект выглядит примерно так: Код: Private Sub cmdGO_Click() Dim myObject As Object Dim strLine As String Set myObject = CreateObject("myObject .myClass", "192.168.0.1") strLine = "test" strLine = myObject .myFunction(strLine) MsgBox (strLine) End Sub |
|
![]() |
#10 |
Участник
|
да, и еще, если кто будет с СОМами биться, в аксапте есть глюк:
если в СОМе пресдусмотрен возврат переменных strLine1, strLine2, strLine3, myObject .myFunction(strLine1, strLine2, strLine3) то в аксапту они не попадут ![]() |
|
![]() |
#11 |
Участник
|
пробовал через ComVariant в параметрах ComVariantInOut::Out_retVal указать?
|
|