|
Просмотр свойств СОМ объекта 1с | ☑ | ||
---|---|---|---|---|
0
serafxxxx
09.09.11
✎
12:05
|
Я в ступоре. 3-й день лазю по OleView-еру, не могу найти методов объекта "V8.Application"
Открываю папку ObjectClasses в OleView, нахожу там 2 класса "1CV8.Application" и "1СV8 COM Connector Class" Если кликать на "1CV8.Application", то нельзя просмотреть TypeInformation. В "1СV8 COM Connector Class" можно открыть TypeInformation, но я не вижу там методов, которые можно использовать.. Где их можно увидеть? (конкретно итересует метод NewObject и наличие остальных) |
|||
1
Cube
09.09.11
✎
12:10
|
(0) Так, это, методы те же, что и в обычном коде на v8...
|
|||
2
Cube
09.09.11
✎
12:11
|
(0) Конкретно спроси, что надо, мы подскажем :)
|
|||
3
serafxxxx
09.09.11
✎
12:22
|
Ситуёвина в следующем: пишу проект на с++, есть необходимость общаться с 1с-кой.
Сначала использовал с++ библиотеку VOLE для этих целей. Чтобы создать запрос в 1Ске проделывал следующее: vole::object zapros=v8._v8.invoke_method<vole::object>(L"NewObject",L"Запрос"); Это работает. Но уж очень сложно с 1с таким макаром работать. Интегрировал в свой проект скриптовый движок Lua, подключил библиотеку LuaCOM, которая позволяет работать с СОМ объектами прямо из скрипта. Вот такая штука в скриптах работает: kontr=v8:Справочники().Контрагенты:НайтиПоНаименованию("Дом быта"):ПолучитьОбъект() А создать объект как создавал в с++ ранее не выходит: zap=v8:NewObject("Запрос") Выдает ошибку "несовпадение типов" Теперь я переписываюсь с разработчиком LuaCOM и он попросил IDL (описание) к СОМ объекту с которым я работаю. А там нихрена нету про NewObject и проблема повисла.. |
|||
4
serafxxxx
09.09.11
✎
12:23
|
буду очень благодарен, если кто-нибудь объяснить где увидеть все доступные свойства и методы СОМ объекта
|
|||
5
Cube
09.09.11
✎
12:33
|
||||
6
DmitrO
09.09.11
✎
12:38
|
и не увидишь. ITypeInfo не поддерживается ни глобальным контекстом 1С ни объектами 1С. Если не много понимать что такое 1С, то даже станет понятно почему.
|
|||
7
serafxxxx
09.09.11
✎
13:11
|
Cube, вы немного не поняли, в с++ метод NewObject работает, а вот из Lua - нет (ругается на несовпадение типа параметра).
Да и (1) сообщение не верное: например, глобальную ф-цию "Тип" мне не удаётся вызвать. Dmitro, не могли бы вы поподробней?) |
|||
8
Cube
09.09.11
✎
13:23
|
(7) Агент+ допиливаешь что-ли?))
|
|||
9
serafxxxx
09.09.11
✎
13:28
|
Нет, не знаю что такое Агент+) Пишу с нуля приложение
|
|||
10
DmitrO
09.09.11
✎
13:31
|
А что подробней-то? Говорю же ITypeInfo нету. Нет его, забудь про IDL. Не может его быть. Только позднее связывание.
"Тип" это встроенная функция, а не функция глобального контекста. Встроенные функции не доступны через OLE. Что такое Lua я знать не знаю, поэтому в чем там проблема понятия не имею. Из C++ с 1С всегда работаю без всяких сторонних библиотек. Для упрощения использую ATL - все работает без проблем. |
|||
11
serafxxxx
09.09.11
✎
13:34
|
(10) Вы используете компилятор от микрософт, а я - gcc, потому без библиотек никак.
|
|||
12
Cube
09.09.11
✎
13:36
|
Уууу, тут я уже не помощник))) Какие-то слова незнакомые пошли :))
|
|||
13
DmitrO
09.09.11
✎
13:43
|
gcc для win32 приложения использующего OLE.. ?)
Не, я даже не буду спрашивать "зачем" - мне реально не интересно это. Нет у меня такого опыта. |
|||
14
serafxxxx
09.09.11
✎
14:16
|
просто OLE там не основное, так, плагин.
|
|||
15
Serginio1
09.09.11
✎
15:00
|
Можно описать диспинтерфейсы, что бу быстрее и удобнее работать
|
|||
16
serafxxxx
13.09.11
✎
10:02
|
Блин, и всё-таки!
Может когда пишешь zap=v8:NewObject("Запрос") Надо передавать не строку, а результат функции Тип? Как обратиться к этой ф-ции через COM? |
|||
17
hhhh
13.09.11
✎
10:16
|
(16) ну напишите функцию в 1С, которая всё вытаскивает и возвращает уже готовую таблицу с данными. Нафига вам на на такой низкий уровень опускаться, запросы туда сюда гонять?
|
|||
18
serafxxxx
13.09.11
✎
10:19
|
А как и где лучше функцию объявить чтобы она была в зоне видимости?
|
|||
19
serafxxxx
13.09.11
✎
10:26
|
Разобрался)
|
|||
20
serafxxxx
13.09.11
✎
10:28
|
На первое время пойдет, но вообще предполагалось, что должно работать на разных конфигурациях без их изменения
|
|||
21
serafxxxx
14.09.11
✎
16:59
|
Оказывается, что если инициализировать соединение так:
v8=luacom.CreateObject("V8.Application") v8:Connect("File='c:\1c\';Usr='usr';Pwd='pwd';") то запр=v8:NewObject("Запрос") выкидывает "несовпадение типов", а если инициализировать так: v8=luacom.CreateObject("V8.COMConnector") v8=v8:Connect("File='c:\1c\';Usr='usr';Pwd='pwd';") то NewObject работает нормально:) |
|||
22
DmitrO
14.09.11
✎
17:14
|
(21) вообще-то это два весьма разных способа подключения.
v8=luacom.CreateObject("V8.Application") v8:Connect("File='c:\1c\';Usr='usr';Pwd='pwd';") Тут прежде чем создавать объект Запрос не мешало бы проверить что возвращает Connect, а возвращает он булево значение, подключилось или нет. |
|||
23
DmitrO
14.09.11
✎
17:16
|
(22)+ и возможность подключения и тем и тем способом зависит от прав пользователя.
|
|||
24
serafxxxx
14.09.11
✎
17:20
|
(22) да, у меня проверялось
(23) пользователя виндовз? |
|||
25
ksupalo
14.09.11
✎
17:33
|
По сабжу.
Не знаю какие там у Вас цели (0), но гонять запросы - это не правильно... Попроси народ написать все что нужно в общем модуле, а потом просто вызывай серверные процедуры. Ты будешь в чистом виде работать в архитектуре клиент-сервер - послал запрос, получил ответ. Это правильно, если прога на с++ будет клиентом для 1С. Гонять данные по COM можно, только если это разовая процедура, например разовая перекачка данных. |
|||
26
serafxxxx
14.09.11
✎
17:46
|
(25) спасибо, учту)
|
|||
27
DmitrO
14.09.11
✎
18:10
|
(24)пользователя 1С
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |