Motarik gabeko objektuekin eta objektu dinamikoekin lan egitea

Akzioak Power Apps direnean, motarik gabeko itzulitako balioak edo akzio batzuetarako sarrera-balioak aurki daitezke. Lehen, Power Apps ez zituen ezagutzen sarrera-eremu dinamikoak edo tiporik gabekoak, eta ez ziren PowerFX esamoldeetan ikusten, baina orain, alor horiekin zuzenean lan egin dezake. Lehen, itzulitako balio-mota balio-mota baliogabetzen zenean, Power Apps balio booleanoa itzultzen zuen. Orain, motarik gabeko objektu bat itzultzen du bere lekuan.

Oharra

Demagun Power Fx esamoldeak funtzio horien itzulera booleanoan oinarritzen direla. Kasu horretan, formula berridatzi eta esplizituki idatzi gabeko objektua boolear batera bota beharko duzu. Funtzio batzuk, 'IfError' adibidez, oraindik ez dira guztiz bateragarriak motarik gabeko objektuekin. Adierazpenak horrelako funtzio bat badu, kontsulta ezazu oharra artikulu honen amaieran, irtenbide alternatiboak lortzeko.

Motarik gabeko objektuak parametro gisa pasatzea

Zenbait ekintzak objektu bat behar dute parametro-balio gisa. Erregistro bat baduzu, motarik gabeko objektu bihur Power Fx dezake, eta horrek ekintzara pasatzeko egokia egiten du.

Hurrengo adibidean, Account Dataverse taula batean eskuragarri dagoen konbinazio-ekintzak motarik gabeko hainbat argudio behar ditu. Prestatzeko, hiru aldagai definituko ditugu TargetObject, SubordinateObject eta UpdateContextObject-a egiteko. Hasteko, Microsoft.Dynamics.CRM.account testu-katea aldagai bati esleituko diogu, eta adibidean zehar berrerabiliko da.

Set (OdataType, “Microsoft.Dynamics.CRM.account”);

Ondoren, TargetObject-i name, accountid eta Power Fx propietateak dituen erregistro bat @odata.type esleitu zaio. Era berean, Subordinate eta UpdateContext objektuei ere erregistroak ematen dizkiegu Power Fx .

Set (TargetObject, {name: "Test 2", accountid: "145dc2ba-85a2-ed11-aado-0022482d76a5", '@odata.type': OdataType});
Set (SubordinateObject, {name: FirstRecord.’Account name’, accountid: FirstRecord.Account, ‘@odata.type’ : OdataType });
Set (UpdateContextObject, {telephone1: FirstRecord.’Main Phone’, address1_city: FirstRecord.’Address 1 : City’, ‘@odata.type’ : OdataType }); 

Jarraian, konbertsioaren ondoren, motarik gabeko erregistroak biltzeko beste hiru aldagai sortuko ditugu: TargetUntypedObject, SubordinateUntypedObject eta UpdateContextUntypedObject. Bihurketa egiteko, ParseJSON(JSON) funtzioa erabiliko dugu jatorrizko aldagaietan. Ekintza horrek erregistroak Power Fx motarik gabeko objektu bihurtuko ditu.

Set (TargetUntypedObject, ParseJSON(JSON(TargetObject)));
Set (SubordinateUntypedObject, ParseJSON(JSON(SubordinateObject)));
Set (UpdateContextUntypedObject, ParseJSON(JSON(UpdateContextObject)));

Azkenik, merge ekintzari dei egiten diogu, beharrezkoak diren parametroak pasatuz, baita motarik ez dutenentzat eta mota dutenentzat ere:

Environment.Merge({Target: TargetUntypedObject, Subordinate: SubordinateUntypedObject, UpdateContent: UpdateContextUntypedObject, PerformParentingChecks: false  });

Ekintza baten bidez itzulitako motarik gabeko objektu baten erabilera

Akzioetan oinarritutako konektore batek objektu bat itzultzen badu, bere propietateetara zuzenean sar daiteke, tipo bat esleitu zaien ala ez kontuan hartu gabe. Hala ere, helburu Power Apps zehatz baterako, etiketatzeko, propietate bat erabiltzeko asmoa baduzu, lehenik eta behin bihurtu egin beharko du.

Hurrengo adibidean, httpRequest funtzioak aldez aurretik booleano bihurtu den motarik gabeko objektu bat itzultzen du.

Set (response, Office365Groups.HttpRequest("/v1.0/me", "GET", ""));

Erantzunaren propietateetako bat displayName da. Bertara sar daiteke, eta bihurtu, honelako adierazpen honekin Power Fx :

Text(response.displayName)

Text objektu bihurtzea etiketa-kontrol Power Apps batean erabiltzeko.

Eremu dinamikoekin lan egitea

Ekintza-erantzunek orain irteera dinamikoa harrapatzen dute eta aurretik deskribatutako metodoa erabil dezakezu propietate horiek eskuratzeko. Gainera, sarrera dinamikoko zelaiekin ere lan egin daiteke.

Kontuan hartu sarrera dinamikoko gorputz-parametroa duen Microsoft Teams 'GetMessageDetails' ekintza. Lehenago, parametro hori ezin zen ikusi, ezta zehaztu ere. Oraintsuko eguneratzearekin, 'body' izeneko aldagai bat ezar dezake, erregistro-egitura egokiarekin Power Fx .

Set ( body, ParseJSON(JSON( {recipient: { groupID: “7f733b36-7c7f-4f4c-9699-0a7b7a2b3897”, channelID: “19: 085d522328fb4a439220641006f7f25@thread.tacv2”}}));

Jarraian, GetMessageDetails ekintzara dei dezakegu eta erantzuna teamsResponse aldagaiari eman.

Set (teamsResponse, MicrosoftTeams.GetMessageDetails ( 1661365068558, “channel”, body ));

Lehen boolear itzultzen zituzten motarik gabeko objektuak itzultzen dituzten formulak bihurtzea.

Power Fx Motarik gabeko objektu kopuru mugatua hartzen du, eta, beraz, formularako konbertsio esplizitua behar da. Bereziki, bere formula erantzun booleana baten menpe badago, bihurtu egin beharko du. Errakuntzarik ba ote dagoen jakin behar badu, IsError funtzioa erabil dezake:

If(
  IsError(Office365Outlook.CalendarDeleteItemV2("Calendar", 1)),
  Notify("An Outlook appointment could not be found or could not be deleted")
)

IfErrorren bidez soilik eskuragarri dagoen errore-informazioa eskuratzeko, motarik gabeko objektua baliozko tipo bihurtu behar du, Boolean, Text edo Value bezalako konbertsio-funtzio baten bidez. Funtzio horiek akats bat eragingo dute, bat ematen bazaie. Ondorengo adibideak hau adierazten du:

With({result: Office365Outlook.CalendarDeleteItemV2("Calendar", 1)},
If( IsError(result),
  IfError(
    Boolean(result),  // any conversion function would do, such as Text, Value, …
    Notify("An Outlook appointment could not be found or could not be deleted: " & FirstError.Message)
) ) )