|
![]() |
#1 |
Участник
|
Основные моменты при создании приложений COM+:
1. Когда создаете приложение COM+, указывайте, что это серверное приложение; 2. Далее в мастере создания в окне "Удостоверение приложения" необходимо указать пользователя и пароль от имени которого стартует АОС; 3. Далее в мастере создания в окне "Добавление пользователей и ролей" также необходимо добавить пользователя от имени которого стартует АОС; 4. При создании конкретного компонента внутри приложения COM+ выбирайте библиотеку comcntr.dll из папки "Program Files (x86)". Нижеприведенный код должен отрабатывать без проблем: X++: new InteropPermission(InteropKind::ComInterop).assert(); COMconnector = new COM(this.getCOMConnectorProg()); CodeAccessPermission::revertAssert(); X++: private str getCOMConnectorProg() { str getCOMConnectorProg; ; switch(Version) { case ::V80 : getCOMConnectorProg = #V80_COMConnector; break; case ::V81 : getCOMConnectorProg = #V81_COMConnector; break; case ::V82 : getCOMConnectorProg = #V82_COMConnector; break; default : throw error(strFmt("Для версии %1 не реализовано",Version)); } return getCOMConnectorProg; } X++: #define.V80_COMConnector('V8.COMConnector') #define.V81_COMConnector('V81.COMConnector') #define.V82_COMConnector('V82.COMConnector')
__________________
Айрат Вильданов. skype: vildanov.a |
|
|
За это сообщение автора поблагодарили: Dron AKA andy (5), S.Kuskov (2), jeky (1), AlexSt (1). |
![]() |
#2 |
Участник
|
Огромное спасибо! Заработало. Похоже ключевым был пользователь, от имени которого запускается АОС.
|
|
![]() |
#3 |
Участник
|
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например: X++: result = connection.axSyncClient("Test"); Такая функция в 1С точно есть, для "V82.Application" это работает. Подскажите пожалуйста, в чем может быть дело? Последний раз редактировалось AlexSt; 21.11.2013 в 12:59. |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от AlexSt
![]() Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например: X++: result = connection.axSyncClient("Test"); Такая функция в 1С точно есть, для "V82.Application" это работает. Подскажите пожалуйста, в чем может быть дело? В данном случае "V82.Application" - это OLE. А функция "ВвестиЗначение" - функция клиентского исполнения, которая представляет собой показ диалога для ввода значение переданного типа и требует работы с интерфейсной составляющей платформы 1С. Через COM-объект ("V82.COMConnector") она работать не будет.
__________________
Айрат Вильданов. skype: vildanov.a |
|
![]() |
#5 |
Участник
|
Но там и не должно быть никакого диалога. Функция должна отработать без взаимодействия с пользователем и вернуть результат в виде текстовой строки. Может быть для работы через COMConnector функции в 1С должны быть написаны с учетом некоторых ограничений?
|
|
Теги |
64-bit, com connector, com+ |
|
|