Раздел: Программирование>ВзаимодействиеСОкружением
Для работы из внешних приложений через COM предназначен AxaptaBusinessConnector
Для работы из Axapta с COM есть две основных возможности: Класс/COM и ЭлементУправленияActiveX
Обрабатывать события можно только в последнем случае, т.е. только в форме
Для того, чтобы точнее понимать, какми образом вызвать методы компонентов, лучше воспользоваться OleView. И посмеотреть его интерфейс. Например component.method в VisualBasic может означать как вызов метода method так и получения значения свойства method и вызова его метода по умолчанию – IDL поможет различить эти два случая
Также можно автоматически сгенерировать обёртки для БиблиотекaТипов: Сервис\Средства Разработки\Мастера\Мастер оболочек для COM объектов
АвторегистрацияActiveX - можно заставить Axaptу устанавливать и регистрировать на клиенте ваши ActiveX при входе пользователя в систему
Если вы используете отдельную нить для работы с COM объектом, не забудьте вызвать OleInitialize:
{ DLL winApiDLL = new DLL('OLE32'); DLLFunction method = new DLLFunction(winApiDLL, 'OleInitialize'); ; method.returns(ExtTypes::DWord); method.arg(ExtTypes::DWord); method.call(0); }
Судя по сообщению в ньюсгруппе microsoft, в Ax40 добавлена подсистема CodeAccessSecurity (CAS). По умолчанию вызовы COM объектов и работа с воодом-выводом будут запрещены. Для вызова COM надо попросить InteropPermission, и только потом, если разрешат можно работать с COM.
COM com; InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); com = new COM(namespace.classname); com.SomeMethod(); CodeAccessPermission::revertAssert();
Как избавиться от контектсного меню во внедренном IE:
<BODY oncontextmenu="return false">