AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.11.2013, 18:57   #1  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Основные моменты при создании приложений 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();
где функция getCOMConnectorProg() имеет вид:

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).
Старый 20.11.2013, 11:13   #2  
AlexSt is offline
AlexSt
Участник
 
5 / 10 (1) +
Регистрация: 12.11.2013
Огромное спасибо! Заработало. Похоже ключевым был пользователь, от имени которого запускается АОС.
Старый 21.11.2013, 12:55   #3  
AlexSt is offline
AlexSt
Участник
 
5 / 10 (1) +
Регистрация: 12.11.2013
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например:
X++:
    result = connection.axSyncClient("Test");
вылетает ошибка, в данном случае: "Метод "axSyncClient" в COM-объекте класса "<неизвестно>" возвратил код ошибки 0x80020009 (DISP_E_EXCEPTION), который означает: {ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)}: Процедура или функция с указанным именем не определена (ВвестиЗначение)."
Такая функция в 1С точно есть, для "V82.Application" это работает. Подскажите пожалуйста, в чем может быть дело?

Последний раз редактировалось AlexSt; 21.11.2013 в 12:59.
Старый 21.11.2013, 14:52   #4  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Цитата:
Сообщение от AlexSt Посмотреть сообщение
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например:
X++:
    result = connection.axSyncClient("Test");
вылетает ошибка, в данном случае: "Метод "axSyncClient" в COM-объекте класса "<неизвестно>" возвратил код ошибки 0x80020009 (DISP_E_EXCEPTION), который означает: {ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)}: Процедура или функция с указанным именем не определена (ВвестиЗначение)."
Такая функция в 1С точно есть, для "V82.Application" это работает. Подскажите пожалуйста, в чем может быть дело?
Не путайте COM и OLE.

В данном случае "V82.Application" - это OLE.

А функция "ВвестиЗначение" - функция клиентского исполнения, которая представляет собой показ диалога для ввода значение переданного типа и требует работы с интерфейсной составляющей платформы 1С. Через COM-объект ("V82.COMConnector") она работать не будет.
__________________
Айрат Вильданов.
skype: vildanov.a
Старый 21.11.2013, 15:18   #5  
AlexSt is offline
AlexSt
Участник
 
5 / 10 (1) +
Регистрация: 12.11.2013
Но там и не должно быть никакого диалога. Функция должна отработать без взаимодействия с пользователем и вернуть результат в виде текстовой строки. Может быть для работы через COMConnector функции в 1С должны быть написаны с учетом некоторых ограничений?
Теги
64-bit, com connector, com+

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пакетная печать com-объектов на терминальном сервере Serg DAX: Программирование 1 22.10.2010 07:06
Проблема доступа через COM Connector wit DAX: Функционал 0 10.07.2006 12:34
Проблема с controlMethodOverload при выполнении на Сервере. oip DAX: Программирование 12 07.04.2006 11:15
Как получить конкретный интерфейс COM объекта Tony Green DAX: Программирование 20 02.12.2004 09:54
Создание экземпляра COM по его CLSID Borisov Nikolai DAX: Программирование 1 02.12.2002 10:37

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:55.