Miklix

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

Buga: 16 Faburairu, 2025 da 11:23:41 UTC

A cikin wannan labarin, na bayyana yadda za a kira aikace-aikace Integration Framework takardun ayyuka a Dynamics AX 2012 kai tsaye daga X ++ code, yin koyi da duka inbound da outbound calls, wanda zai iya sa ya fi sauƙi a samu da kuma cire kuskure a cikin AIF code.


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 post ya dogara ne akan Dynamics AX 2012 R3. Zai iya zama daidai ko kuma ba zai yiwu ba ga wasu juyin.

Ba da daɗewa ba, na taimaka wa wani mai ƙwazo ya yi amfani da tsarin haɗin kai na Shirin Ayuka (AIF) don ya halicci masu amfani bisa bayani da suke samu daga wani na'ura. Tun da yake Dynamics AX ya riga ya ba da aikin takardar CustCustomer, wanda ke yin amfani da dalilin wannan, mun tsai da shawara mu riƙe shi sauƙi kuma mu yi amfani da magance na ƙwarai.

Amma, ba da daɗewa ba ya gano cewa akwai matsaloli da yawa wajen sa na'urar waje ta ƙera XML da Dynamics AX za ta karɓa. XML schema da Dynamics AX ta halitta yana da wuya sosai kuma yana bayyana cewa akwai kuskure kaɗan a Dynamics AX da a wasu lokatai suke sa ya ƙi XML wanda yake da amfani da shi bisa wasu kayayyaki, saboda haka, dukansu, ya zama ƙaramin sauƙi fiye da yadda na yi tunani.

A lokacin ƙoƙarin, sau da yawa na yi ƙoƙari na san abin da matsalar take da wasu fayil na XML domin saƙon kuskure da AIF ya bayar ba shi da sani. Ban da haka ma, yana da ban sha'awa, domin na jira na'urar waje ta aika sabon saƙo bisa MSMQ kuma sai kuma don AIF ya ɗauki saƙon kuma ya yi amfani da shi kafin in ga kuskure.

Saboda haka na bincika ko zai yiwu a kira kodin hidima kai tsaye da fayil na XML na yankin don gwaji mai sauƙi kuma ya bayyana cewa - ba kawai haka ba, yana da sauƙi a yi kuma a gaskiya yana ba da saƙon kuskure mai ma'ana.

Aikin misali da ke ƙasa yana karanta fayil na XML na yankin kuma yana ƙoƙarin ya yi amfani da shi da aji na AxdCustomer (wancan shi ne ajin takardar takardar da CustCustomer yake amfani da shi) don ya halicci mai amfani da shi. Za ka iya yin irin wannan aikin ga dukan sauran ayoyin takardar takardar takardar takardar

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');
}

AifEntityKey abu dawo da abokin ciniki.create () hanyar (wanda ya dace da "halitta" sabis aiki a AIF) yana dauke da bayanai game da abin da abokin ciniki aka halitta, a tsakanin sauran abubuwa RecId na halitta CustTable rikodin.

Idan abin da kake ƙoƙarin gwada shi ne tashar jirgin ruwa na Outbound maimakon haka ko kuma idan kana bukatar misali na yadda XML ya kamata ya kasance kamar a tashar jirgin ruwa na Inbound, za ka iya yin amfani da aji na takardar takardar don ka fitar da mai amfani da shi zuwa fayil maimakon haka ta kira hanyar karanta () (daidai da aiki na hidima na "karanta") maimakon haka, 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');
}

Hakika, ya kamata ka mai da '123456' da yawan takardar da kake son ka karanta.

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

Mikkel Bang Christensen

Game da Marubuci

Mikkel Bang 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.