Wiele standardowych funkcji Windows jest oferowanych w postaci interfejsu COM, również aplikacje z pakietu Microsoft Office mogą być kontrolowane przez programistów za pomocą interfejsów COM. Aplikacja zbudowana z obiektów w modelu COM jest znacznie bardziej elastyczna.
O technologii COM można powiedzieć, że jest klejem, przy użyciu którego budowany jest Windows i jego aplikacje. Pozwala złączyć obiekty pochodzące od różnych producentów i wykorzystać je we własnych aplikacjach. Obiekty COM można wywoływać nawet z poziomu procedur wbudowanych SQL. axapta oczywiście jest także wyposażona w mechanizmy umożliwiające komunikacje oraz wywoływanie metod za pomocą COM. Tak samo jak w innym dowolnym języku programowania w systemie Windows obsługa modelu COM jest bardzo łatwa.
axapta posiada zbiór obiektów (widocznych w AOT) które opakowują obiekty COM dostępne w systemie. Oczywiście nazwy metod odzwierciedlają nazwy metod obiektów wywoływanych klas i przeważnie łatwo jest się domyślić ich zastosowania oraz użycia.
Przyjrzyjmy się bliżej problemowi na przykładzie wywołania programu Excel. (można oczywiście użyć tutaj dowolnego innego własnego programu od zewnętrznego dostawcy, który zarejestrował swoje obiekty w systemie)
W Axapcie nazwa obiektów COM oferujących obsługę Excela zaczyna się od 'SysExcel'. Poniższy przykład pokazuje jak do Excela pracowników.
static void ExcelAPITestJob(Args _args)
{
SysExcelApplication excelApp = SysExcelApplication::construct();
SysExcelWorkSheet excelWorksheet;
SysExcelRange excelRange;
SysExcelCells excelCells;
SysExcelCell excelCell;
ComVariant cellValue = new ComVariant() ;
EmplTable empTable;
int i;
// otwieramy wczesniej przygotowany szablon ktory wylepnimy danymi
excelApp.workbooks().open( 'c:\\tmp\\empl_rep.xlt' );
// ustawiamy sie na pierwszym arkuszu
excelWorksheet = excelApp.worksheets().itemFromNum( 1 );
// pobieramy wskazanie na komorki
excelCells = excelWorksheet.cells();
// pobieramy dane o zatrudnionych i wpisujemy je do komorek
while select empTable
{
excelCells.item( 5 + i, 2 ).value( cellValue.bStr( empTable.EmplId ) );
excelCells.item( 5 + i, 3 ).value( cellValue.bStr( empTable.Name ) );
i++;
}
excelApp.visible( true );
}
Przykład używa przygotowanego wcześniej szablonu (odpowiednie kolory, oraz formatowanie kolumn). Jednak nic nie stoi na przeszkodzie aby generować arkusz w całości z kodu: dane oraz formatowanie zależne od danych.