Kopīgot, izmantojot


Darbs ar netipizētiem un dinamiskiem objektiem

Veicot darbības Power Apps, dažām darbībām ir iespējams sastapties ar neierakstītām atgrieztām vērtībām vai ievades vērtībām. Pirms tam Power Apps tika ignorēti nerakstīti vai dinamiski ievades lauki, un tie nebūtu redzami PowerFX izteiksmēs, bet tagad jūs varat strādāt tieši ar šiem laukiem. Pirms, kad atgriešanas tips bija neierakstīts,atgrieztu Power Apps Būla vērtību. Tagad tā vietā tiek atgriezts nerakstīts objekts.

Piezīme

Pieņemsim, ka jūsu Power Fx izteiksmes balstās uz Būla atgriezto vērtību no šīm funkcijām. Tādā gadījumā jums būs jāpārraksta formula un skaidri jānodod nerakstītais objekts Būlam. Dažas funkcijas, piemēram, "IfError", vēl pilnībā neatbalsta neierakstītus objektus. Ja izteiksmē ir šāda funkcija, risinājumus skatiet piezīmē šī raksta beigās.

Nerakstītu objektu nodošana kā parametri

Dažām darbībām ir nepieciešams neierakstīts objekts kā parametra vērtība. Ja jums ir Power Fx ieraksts, varat to pārvērst par neierakstītu objektu, padarot to piemērotu nodošanai darbībai.

Tālāk sniegtajā piemērā sapludināšanas darbībai, kas pieejama Dataverse tabulā Konts, ir nepieciešami vairāki neierakstīti argumenti. Lai sagatavotos, mēs definēsim trīs mainīgos, lai turētu TargetObject, SubordinateObject un UpdateContextObject. Vispirms mainīgajam tiks piešķirta teksta virkne Microsoft.Dynamics.CRM.account, kas tiks atkārtoti izmantota visā piemērā.

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

Tad TargetObject tiek piešķirts Power Fx ieraksts ar vārda, konta un @odata.type. Mēs līdzīgi piešķiram Power Fx ierakstus arī Subordinate un UpdateContext objektiem.

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

Pēc tam mēs izveidosim vēl trīs mainīgos, lai pēc konvertēšanas saglabātu neierakstītos ierakstus: TargetUntypedObject, SubordinateUntypedObject un UpdateContextUntypedObject. Lai veiktu konvertēšanu, sākotnējiem mainīgajiem tiks izmantota funkcija ParseJSON(JSON()). Šī darbība pārveidos ierakstus Power Fx par neierakstītiem objektiem.

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

Visbeidzot, mēs saucam par sapludināšanas darbību, nododot nepieciešamos parametrus, tostarp gan nerakstītiem, gan drukātiem:

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

Neierakstīta objekta, kas atgriezts, veicot darbību, izmantošana

Ja uz darbību balstīts savienotājs atgriež objektu, tā rekvizītiem var piekļūt tieši neatkarīgi no tā, vai tiem ir piešķirts tips. Tomēr, ja plānojat izmantot īpašumu konkrētam mērķim Power Apps, piemēram, marķēšanai, jums tas vispirms būs jāizmet.

Tālāk sniegtajā piemērā funkcija httpRequest atgriež neierakstītu objektu, kas iepriekš ir ticis atveidots kā Būla skaitlis.

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

Viens no atbildes rekvizītiem ir displayName. Tam var piekļūt un nodot ar Power Fx šādu izteiksmi:

Text(response.displayName)

Nodots objektam Teksts, lai to Power Apps izmantotu uzlīmju vadīklā.

Darbs ar dinamiskajiem laukiem

Darbību atbildes tagad tver dinamisko izvadi, un jūs varat izmantot iepriekš aprakstīto metodi, lai piekļūtu šiem rekvizītiem. Turklāt ir iespējams strādāt arī ar dinamiskiem ievades laukiem.

Apsveriet darbību "GetMessageDetails", kurai Microsoft Teams ir dinamisks ievades korpusa parametrs. Iepriekš šo parametru nevarēja apskatīt vai norādīt. Izmantojot neseno atjauninājumu, varat iestatīt mainīgo, ko sauc par "ķermeni", ar atbilstošu Power Fx ierakstu struktūru.

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

Pēc tam mēs varam izsaukt darbību GetMessageDetails un piešķirt atbildi mainīgajam teamsResponse.

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

Tādu formulu konvertēšana, kas atgriež neierakstītus objektus, kuri iepriekš atgrieza Būla vērtību.

Power Fx aizņem ierobežotu skaitu neierakstītu objektu, tāpēc formulai var būt nepieciešama skaidra konvertēšana. Jo īpaši, ja jūsu formula ir atkarīga no Būla atbildes, jums būs jākonvertē. Ja jums vienkārši jāzina, vai kļūda pastāv, varat izmantot funkciju IsError:

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

Lai piekļūtu informācijai par kļūdām, kas ir pieejama tikai ifError, neierakstītais objekts ir jāpārveido par derīgu tipu, izmantojot pārvēršanas funkciju, piemēram, Būla, Teksta vai Vērtības. Šīs funkcijas radīs kļūdu, ja tām tāda tiks piešķirta. To ilustrē šis piemērs:

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)
) ) )