|
1С и Axapta. Работа с ComObject, переданными из Axapta. | ☑ | ||
---|---|---|---|---|
0
Dunstan
20.12.11
✎
11:18
|
День добрый господа! Мои коллеги аксаптологи подкинули мне задачку. Суть заключается в том, что в 1С 8.2 передается огбъект аксапты контейнер. Контейнер это конечный набор каких-либо простых объектов.
Аксапта возращает ComObject. См. текст программы: //************************************************ Axapta = Новый COMObject("AxaptaCOMConnector.Axapta3"); Попытка Axapta.Logon("ORO", "", "", "C:\191211\test1.axc"); Massiv = Axapta.CallStaticClassMethod("ComBalanceInterface_AC","Test"); Сообщить("Ура"); Axapta.logoff(); Исключение Axapta.logoff(); Сообщить("Облом"); КонецПопытки //************************************************ Мassiv содержит КомОбъект контейнер. Вот как можно из этого контейнера извлечь его содерживое в 1С. Сам объект container имеет в своем составе методы: conlen(c) - кол-во элементов контейнера с conpeek(c, n) – получить элемент #n из контейнера с Я думал все просто: прямо в 1С пишешь код Для I= 1 По Axapta.conlen(Massiv) Цикл Эл = Axapta.conpeek(Massiv, I); КонецЦикла; Но так не работает...:( Может кто занет как быть в этой ситуации... |
|||
1
Ненавижу 1С
гуру
20.12.11
✎
11:22
|
"Но так не работает"
предлагается угадать почему ты считаешь, что не работает? |
|||
2
Ненавижу 1С
гуру
20.12.11
✎
11:23
|
1. может не стоит сразу же закрывать соединение?
2. нумерация случайно не с 0 начинается? |
|||
3
АйЭм
20.12.11
✎
11:28
|
Даже не задумываясь - на http://www.mazzy.ru/ смотрел?
В свое время из Кацапты в Эксель коннект делался по материалам этого сайта. |
|||
4
Dunstan
20.12.11
✎
11:28
|
(1) На Axapta.conlen(Massiv) пишет нет такого метода
(2) Соединение не закрыто |
|||
5
Serginio1
20.12.11
✎
11:37
|
А может Это методы массива Massiv?
т.е. Massiv.conlen() Massiv.conpeek(i) |
|||
6
Dunstan
20.12.11
✎
11:41
|
(5) Я в аксапте не силен. Но в этих функциях контейнер выступает как аргумент функции. И ,казалось бы, функция глобальная
|
|||
7
Dunstan
20.12.11
✎
11:42
|
(3) А где там конкретно http://www.mazzy.ru/ про вызов Кацапты из Ёкселя?
|
|||
8
Serginio1
20.12.11
✎
11:44
|
(7) Посмотри в отладчике. Может это обычный SafeArray
|
|||
9
Ненавижу 1С
гуру
20.12.11
✎
11:45
|
пальцем в небо: Massiv[i]
|
|||
10
Dunstan
20.12.11
✎
11:45
|
(8) MaSSIV ОПРЕДЕЛЯЕТСЯ С ТИПОМ cOMoBJECT
|
|||
11
Ненавижу 1С
гуру
20.12.11
✎
11:46
|
(10) а правильно писать:
conLen |
|||
12
Serginio1
20.12.11
✎
11:57
|
(10) А какие нибудь поля показывает?
Может через ADO или рекордсеты проще будет? Найди обработку, которая через ITypeInfo показывает все свойства и методы объекта |
|||
13
Serginio1
20.12.11
✎
12:01
|
Попробуй конструкцию для каждого
Если объект поддерживает интерфейс итератор |
|||
14
Dunstan
20.12.11
✎
12:05
|
(12) НИКАКИХ ПОЛЕЙ НЕ ПОКАЗЫВАЕТ
ПРОСТО КОМОБЪЕКТ |
|||
15
Ненавижу 1С
гуру
20.12.11
✎
12:06
|
(14)
1. капс-лок выключи 2. что насчет (11)? |
|||
16
Dunstan
20.12.11
✎
12:09
|
(15) теже яйца только в профиль
|
|||
17
Serginio1
20.12.11
✎
12:27
|
А вообще пользовательские функции из Акзапты Экспортируютс?
Судя по Axapta.CallStaticClassMethod("ComBalanceInterface_AC","Test"); Сроздай две функци которые бы применяли conlen(c) и conpeek(c, n) И вызывай их через Axapta.CallStaticClassMethod |
|||
18
Dunstan
20.12.11
✎
15:55
|
Правильно, мне дали сосет по поводу делать так как в Экселе. У AxaptaCOMConnector.Axapta3 есть свои объекты. И, в том числе, объект Axapta.Container у которого свои методы,отличные от чисто аксаптивных.
//********************** Axapta = Новый COMObject("AxaptaCOMConnector.Axapta3"); Попытка Axapta.Logon("ORO", "", "", "c:\test1.axc"); x = Axapta.CallStaticClassMethod("ComBalanceInterface_AC","Test"); Сообщить (x.peek(2)); Сообщить("УРА"); Axapta.logoff(); Исключение Axapta.logoff(); КонецПопытки //**************************** |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |