Partekatu bidez


Form OnSave gertaera (bezeroaren APIaren erreferentzia) ereduetan oinarritutako aplikazioetan

Gertaera gertatzen da OnSave honako hauetan:

  • Erabiltzaileak Gorde edo Freskatu botoia hautatzen du komando-barran, gorde beharreko datu aldaturik ez dagoenean ere.
  • Code-k formContext.data.entity.save metodoa exekutatzen du, gorde beharreko datu aldaturik ez dagoenean ere.
  • Erabiltzaileak inprimakitik urruntzen du eta gorde gabeko datuak daude inprimakian.
  • Gorde automatikoa aukera gaituta, datuak aldatu eta inprimakian gorde gabeko datuak daudenean 30 segundora.
  • Kodeak formContext.data.save metodoa exekutatzen du eta gorde gabeko datuak daude inprimakian.
  • Kodeak formContext.data.refresh metodoa exekutatzen du, benetako balioa lehen parametro gisa pasatuz, eta inprimakian gorde gabeko datuak daude.

Oharra

HitzorduenOnSave, hitzordu errepikakorren edo zerbitzu-jardueraren erregistroen gertaerak gordetze-eragiketa bertan behera utziko du, eta mezua Book erabiliko du aldaketa mantentzeko, edo CreateordezUpdate. Hori dela eta, OnSave taula PostSave hauetako gertaeren kudeatzaileek ez dute funtzionatuko.

Gordetzeko zein botoian klik egin den zehazteko, erabili getSaveMode metodoa.

Gordetzeko ekintza bertan behera utz dezakezu event-argumentuen objektuaren barruan preventDefault metodoa erabiliz. preventDefault metodoa erabilgarri exekuzio-testuinguruaren parte den getEventArgs metodoa erabiliz. Exekuzio-testuingurua automatikoki pasatzen zaio inprimakiaren gertaeren kudeatzaileari.

Gertaera-kudeatzaile asinkronoen euskarria

OnSave gertaerak gertaera-kudeatzaileek itzulitako promesak gorde aurretik konpondu arte itxaron ahal izango du, OnSave gertaera asinkronoa ("asinkronoa") izan dadin.

Gertaera OnSave asinkrono bihurtzen da gertaera-kudeatzaileak promesa bat itzultzen duenean OnSave . Erregistroa gordetzea kudeatzaile batek itzulitako promesa bakoitza konpontzen denean gertatzen da. Itzultzen diren promesen kasuan, 10 segundoko muga promesa bakoitzeko, eta ondoren plataformak promesak agortu egiten direla uste du. Denbora-muga hau promesaren arabera aplikatzen da. Adibidez, bost promesa itzultzen baditugu, itxaronaldia 50 segundokoa da.

Promesa baztertzen bada edo denbora agortzen bada, gordetze-eragiketak uneko script-aren erroreen antzeko portaera izaten jarraituko du. Erabili preventDefault metodoa kudeatzaile zehatz horretako gertaera-argumentuen objektuaren barruan, script errorea edo baztertutako promesa edo kudeatzailearen denbora agortzea saihestu nahi baduzu.

Gordetzeko eragiketa bertan behera utz dezakezu, kudeatzailean errorea egon arren edo gertaera-argumentuen objektuan preventDefault metodoa erabili gabe. Metodo honi deitzen bazaio, Async OnSave gertaerak promesa guztiak likidatzeko zain egongo da, baina gordetzea ez da gertatuko. Metodo hau deituz gero, & .catch() barruko .then() logika exekutatuko dela esan nahi du.

Gertaerak OnSave kudeatzaile bakoitzeko promesa baten zain. Hainbat promesa behar badira, promesa Promise.all() guztiak metodoan biltzea eta emaitza bakarra itzultzea gomendatzen da. Promesa bat itzultzen duten kudeatzaile anitzentzat, gertaera guztiak deitzen dituen kudeatzaile bat sortzea gomendatzen dizugu eta beharrezko promesa guztiak biltzen dituen promesa bakarra itzultzea. Praktika hau denbora-mugak eragindako itxaronaldiak minimizatzea da.

OnSave kudeatzaile asinkronoak noiz erabili behar diren jakiteko agertoki adibidea

Kontuan hartu lan-aginduaren zerbitzu-zeregina sortzea, hautatutako bezeroaren aktiboak kontu bera duela egiaztatu behar duzu. Kontua Lan Aginduan eta Bezeroaren Aktiboan eskuratzea prozesu asinkronoak dira eta baliozkotzea gertatu aurretik osatu behar dira.

Eszenatoki honetan, prozesu asinkrono anitz daudenez eta bi deiek promesa bakarra itzultzen dute biak metodoan Promise.all() biluz.

Oharra

Metodoa preventDefault sinkronizoan soilik erabil daiteke.

Adibidez:

 function myHandler() {
    return Promise.all([getWorkOrderPromise, getCustomerAssetPromise]).then((values) => {
        var workOrder = values[0];
        var customerAsset = values[1];
        // Perform validation
        if (isValid(workOrder, customerAsset)) {
            return Promise.resolve();
        }
        return Promise.reject(new Error("Validation failed for the work order and customer asset"));
   });
 }

Gaitu Async OnSave aplikazioaren ezarpenak erabiliz

onSave kudeatzaile asinkronoak erabiltzeko, aplikazioaren ezarpen baten bidez gaitu behar duzu:

  1. Joan hona: https://make.powerapps.com.

  2. Ziurtatu ingurune egokia hautatzen.

  3. Ezkerreko nabigazio-panelean, hautatu Aplikazioak.

  4. Hautatu aplikazioa, eta ondoren hautatu ... (elipseak). Hautatu Editatu.

  5. Hautatu Ezarpenak komando-barran.

  6. Elkarrizketa-koadroa irekitzean, hautatu Eginbideak.

  7. Aktibatu Asinkronoa aktibatu Aurreztearen kudeatzailea.

  8. Hautatu Gorde.

    Async OnSave aplikazioaren ezarpena

Async OnSave denbora-mugak

Kudeatzaile asinkrono OnSave bat erabiltzen duzunean, inprimakiak kudeatzaileak itzulitako promesa bete arte itxaroten du. Inprimakia garaiz gordetzen dela ziurtatzeko, kudeatzaileak denbora-muga salbuespen bat botako du 10 segundoren buruan, kudeatzaile asinkronoa OnSave errendimendu hobea lortzeko sintonizatzeko jakinarazteko.

Badira eszenatokiak non kudeatzailea OnSave 10 segundo baino gehiago geldiarazi behar den. Adibide bat elkarrizketa-koadro bat irekitzea eta erabiltzailearen sarreraren zain egotea da gordetzen jarraitu aurretik. Eragiketa asinkronoa promesa konpondu arte itxaroten dela ziurtatzeko, erabili disableAsyncTimeout metodoa.

Oharra

Itxaroteko instrukzioak edo dei asinkronoak baino lehen deitu disableAsyncTimeout behar duzu.

Adibidez:

async function myHandler(context) {  
     context.getEventArgs().disableAsyncTimeout();
     // The 10000ms time out will not be disabled if the above line does not come before all async awaits
     await Xrm.Navigation.openConfirmDialog({ text: "Are you sure you want to save?" });
 }

DisableAsyncTimeout deitzen denean, kudeatzaile horren denbora-muga ez da aplikatuko. Arduradun horren promesa bete arte itxaroten jarraitzen du.

Eredu hau kontuz erabili behar da, inprimakia gordetzeko errendimenduan eragina izan baitezake.

Saretaren gordetzeko gertaera
Gertaerak (bezeroaren APIaren erreferentzia)
Gertaerak inprimakietan eta sareetan ereduetan oinarritutako aplikazioetan