Miklix

Kira AIF Document Services kai tsaye daga X ++ a Dynamics AX 2012

Buga: 16 Faburairu, 2025 da 11:23:41 UTC
An sabunta ta ƙarshe: 12 Janairu, 2026 da 08:55:33 UTC

A cikin wannan labarin, na yi bayani kan yadda ake kiran ayyukan takardun Tsarin Haɗakar Aikace-aikace a cikin Dynamics AX 2012 kai tsaye daga lambar X++, ina kwaikwayon kiran shiga da fita, wanda zai iya sauƙaƙa gano kurakurai da gyara kurakurai a cikin lambar AIF.


An fassara wannan shafin na'ura daga Turanci don a sami damar isa ga mutane da yawa gwargwadon iko. Abin takaici, fassarar inji ba ta zama cikakkiyar fasaha ba, don haka kurakurai na iya faruwa. Idan kuna so, kuna iya duba ainihin sigar Turanci anan:

Calling AIF Document Services Directly from X++ in Dynamics AX 2012

Bayanin da ke cikin wannan sakon ya dogara ne akan Dynamics AX 2012 R3. Yana iya zama ko ba zai yi aiki ba ga wasu sigar.

Kwanan nan na taimaka wa wani abokin ciniki wajen aiwatar da Tsarin Haɗin Aikace-aikace (AIF) don ƙirƙirar abokan ciniki bisa ga bayanan da suke karɓa daga wani tsarin. Ganin cewa Dynamics AX ta riga ta samar da sabis na takaddun CustomCustomer, wanda ke aiwatar da dabarun wannan, mun yanke shawarar yin sauƙi kuma mu yi amfani da mafita ta yau da kullun.

Duk da haka, nan da nan ya bayyana cewa akwai matsaloli da yawa wajen samar da tsarin waje don samar da XML wanda Dynamics AX zai karɓa. Tsarin XML da Dynamics AX ya samar abu ne mai rikitarwa kuma yana bayyana cewa akwai ƙananan kurakurai a cikin Dynamics AX waɗanda wani lokacin ke sa shi ya ƙi XML wanda ke da inganci bisa ga wasu kayan aikin, don haka gabaɗaya, ya zama ba shi da sauƙi kamar yadda na yi tunani.

Lokacin wannan aiki, sau da yawa ina fama da matsalar gano ainihin matsalar da ke tattare da wasu fayilolin XML saboda saƙonnin kuskuren da AIF ke bayarwa ba su da wani bayani. Hakan kuma ya kasance mai wahala, domin dole ne na jira tsarin waje ya aika sabon saƙo ta hanyar MSMQ sannan kuma AIF ta ɗauki saƙon ta sarrafa shi kafin in ga kuskure.

Saboda haka na bincika ko zai yiwu a kira lambar sabis kai tsaye tare da fayil ɗin XML na gida don gwaji mai sauri kuma ya bayyana cewa hakan ne - kuma ba wai kawai hakan ba, yana da sauƙin yi kuma a zahiri yana ba da saƙonnin kuskure masu ma'ana da yawa.

Misalin aikin da ke ƙasa yana karanta fayil ɗin XML na gida kuma yana ƙoƙarin amfani da shi tare da ajin AxdCustomer (wanda shine ajin takarda da sabis na CustomCustomer ke amfani da shi) don ƙirƙirar abokin ciniki. Kuna iya yin ayyuka makamancin haka ga duk sauran azuzuwan takardu, misali AxdSalesOrder, idan kuna buƙata.

static void CustomerCreate(Args _args)
{
    FileNameOpen fileName    = @'C:\\TestCustomerCreate.xml';
    AxdCustomer  customer;
    AifEntityKey key;
    #File
    ;

    new FileIoPermission(fileName, #IO_Read).assert();

    customer = new AxdCustomer();

    key = customer.create(  XmlDocument::newFile(fileName).xml(),
                            new AifEndpointActionPolicyInfo(),
                            new AifConstraintList());

    CodeAccessPermission::revertAssert();

    info('Done');
}

Abin AifEntityKey da hanyar customer.create() ta dawo (wanda ya yi daidai da aikin sabis na "ƙirƙira" a cikin AIF) ya ƙunshi bayanai game da wanne abokin ciniki aka ƙirƙiri, tare da wasu abubuwa RecId na rikodin CustTable da aka ƙirƙira.

Idan abin da kake ƙoƙarin gwadawa shine tashar fitarwa ko kuma idan kawai kana buƙatar misali na yadda XML ya kamata ya kasance akan tashar Inbound, zaka iya amfani da ajin takarda don fitar da abokin ciniki zuwa fayil maimakon ta hanyar kiran hanyar read() (wanda ya dace da aikin sabis na "read"), kamar haka:

static void CustomerRead(Args _args)
{
    FileNameSave    fileName = @'C:\\TestCustomerRead.xml';
    Map             map      = new Map( Types::Integer,
                                        Types::Container);
    AxdCustomer     customer;
    AifEntityKey    key;
    XMLDocument     xmlDoc;
    XML             xml;
    AifPropertyBag  bag;
    #File
    ;

    map.insert(fieldNum(CustTable, AccountNum), ['123456']);
    key = new AifEntityKey();
    key.parmTableId(tableNum(CustTable));
    key.parmKeyDataMap(map);
    customer = new AxdCustomer();

    xml = customer.read(key,
                        null,
                        new AifEndpointActionPolicyInfo(),
                        new AifConstraintList(),
                        bag);

    new FileIoPermission(fileName, #IO_Write).assert();
    xmlDoc = XmlDocument::newXml(xml);
    xmlDoc.save(fileName);
    CodeAccessPermission::revertAssert();
    info('Done');
}

Ya kamata ka maye gurbin '123456' da lambar asusun abokin cinikin da kake son karantawa.

Karin Karatu

Idan kuna jin daɗin wannan sakon, kuna iya kuma son waɗannan shawarwari:


Raba kan BlueskyRaba akan FacebookRaba kan LinkedInRaba akan TumblrRaba akan XRaba kan LinkedInFitar akan Pinterest

Mikkel Christensen

Game da Marubuci

Mikkel Christensen
Mikel shine mahalicci kuma mai miklix.com. Yana da fiye da shekaru 20 gwaninta a matsayin ƙwararren mai tsara shirye-shiryen kwamfuta / mai haɓaka software kuma a halin yanzu yana aiki cikakken lokaci don babban kamfani na IT na Turai. Lokacin da ba ya yin rubutun ra'ayin kanka a yanar gizo ba, yana ciyar da lokacinsa a kan ɗimbin abubuwan bukatu, sha'awa, da ayyuka, waɗanda har zuwa wani lokaci za a iya nunawa a cikin batutuwa iri-iri da aka rufe akan wannan rukunin yanar gizon.