コマンドでの Power Fx の使用
この記事では、コマンドに固有の Power Fx の側面について説明します。 キャンバス アプリ内で現在使用されている他の多くの機能も使用できます。 コマンドはモデル駆動型アプリ向けであるため、違いがあることに注意してください。
- 既存のすべてのデータ フロー機能がサポートされています。 データフローとは何か?
- データ処理をする命令関数はサポートされています。
- シンプルな
Confirm
とNotify
の命令関数はサポートされています。 - サポートされていない関数のリストについては、サポートされていない関数 にアクセスしてください。
注意
Power Fx コマンドの公開には数分かかる場合があります。 公開操作が完了したように見えても、バックグラウンド操作がまだ実行されていることは明らかではない場合があります。 公開後数分待ってから、アプリを更新して変更が反映されるようにする必要がある場合があります。 これは通常、Power Fx ベースのコマンドがアプリに対して最初に公開されるときに時間がかかります。
OnSelect
アプリ内でボタンが選択されたときに実行されるロジックを定義します。
表示可能
アプリの実行時にボタンを非表示、または表示するためのロジックを定義します。
可視性ロジックを定義するには、コマンドを選択します。 続いて、右側のコマンドプロパティペインでVisibilityを選択し、式から条件を表示するを選択します。 これで、数式バーの左側で可視化を選択し、数式バーを使用して Power Fx の式を記述します。
選択されたプロパティ
フィールド | タイプ | 説明設定 |
---|---|---|
Item | データソースのレコード | データソースから選択された 1 つのレコード。 |
AllItems | データソースからのレコードのテーブル | データソースから選択されたすべてのレコード。 |
状態 | 列挙型 | 選択されたコントロールの状態。 編集 (=0)、新規 (=1)、表示 (=2) |
未保存 | ブール型 | Selected または SelectedItems に未保存の変更がある場合は true を返します。 それ以外の場合は、false を返します。 コマンド コンポーネント ライブラリ内で自動保存が true (デフォルト オプション) に設定されている場合は、常に false を返します。 |
- 選択済みプロパティは、コマンドのホストによって提供されます。
- アイテムと全てのアイテムの名前は ComboBox コントロールおよびギャラリー コントロールとある程度一致していますが、これは新しいパターンです。
- レコードが選択されていない場合は、アイテム は空白を返し (IsBlank は ture を返す)、全てのアイテム は空のテーブルを返します (IsEmpty は true を返す)。
- レコード参照用の Null データソース (ポリモーフィック レコード タイプ)。 Save や IsType/AsType などの汎用関数を呼び出すことができます。
- アイテム は SelectionMax <> 1 の場合、常に空白です。 これにより、数式を 1 つのアイテムだけに記述したり、複数のアイテムにスケーリングしたりすることがなくなります。
AutoSave
- 多くの JavaScript コマンドは、フォーム バッファーを保存することから始まります。 これは、コードの残りの部分を操作しやすくするためです。
- デフォルトでは、フォーム バッファーはアプリ開発者の代わりに保存されます。
- コマンドが開始される前に、フォームが保存されます。
- 保存操作中に発生した問題は、フォームの UI 内で処理されます。
Patch 関数
現在選択されたレコードを Patch (パッチ、更新) します
Patch(Accounts, Self.Selected.Item, {'Account Name': "Changed Account name"})
関連レコードの作成
注意
関連するテーブルがまだコマンド コンポーネント ライブラリにない場合は、canvas studio で開き、そこにデータ ソースを追加する必要があります。
Patch(Tasks,Defaults(Tasks),{Regarding:Self.Selected.Item},{Subject:"Subject of the Task"})
日付プロパティの確認と編集
If(Self.Selected.Item.'Last Date Included in Campaign'>DateAdd(Now(),-3), Patch(Accounts,Self.Selected.Item,{'Last Date Included in Campaign':Date(2021,10,19)}))
Visible プロパティ: グリッド ビューで 1 つ以上のレコードが選択されている場合にのみコマンドを表示する
CountRows(Self.Selected.AllItems) > 0
レコード データに基づいて可視性を制御する
//Button will be visible for accounts with Account Rating > 20
Self.Selected.Item.'Account Rating'>20
移動
注意
その他のオプションについては、JavaScript を使用するクライアント API のリファレンスを参照してください。 詳細: navigateTo (クライアント API リファレンス)
カスタム ページに移動する
モデル駆動型アプリ内でカスタム キャンバスページに移動するには、最初の引数にページ名を渡します。
Navigate( myCustomPage )
テーブルの既定のビューに移動する
テーブルの規定ビューに移動するには、最初の引数としてテーブル名を渡します。
Navigate( Accounts )
テーブルの特定のシステム ビューに移動する
テーブルの特定のシステム ビューに移動するには、列挙型のテーブルの Views
を渡します。
Navigate( 'Accounts (Views)'.'My Active Accounts' )
テーブルの既定フォームに移動
テーブルの既定フォームに移動するには、レコードを最初の引数として渡します。
Navigate( Gallery1.Selected )
作成モードでテーブルの既定フォームに移動
作成モードでテーブルの既定フォームに移動するには、既定 関数から作成された Dataverse レコードを渡します。 これにより、レコードを使用する既定フォームが新しいレコードとして開きます。 Defaults 関数は、テーブル名を使用してレコードを作成します。
Navigate( Defaults( Accounts ) )
データソースとレコード情報によるユーザーエクスペリエンスの最適化
DataSourceInfo 関数と RecordInfo 関数 を使用して表示および操作されるデータに関する情報を使用して、ユーザー エクスペリエンスを最適化します。
たとえば、RecordInfo を使用して、現在のユーザーがレコードを変更する権限を持っているかどうかを判断し、Visible プロパティを使用して "編集" ボタンを適切に表示または非表示にします:
EditButton.Visible =
RecordInfo( Gallery1.Selected, RecordInfo.EditPermission )
たとえば、DataSourceInfo を使用して、現在のユーザーにレコードを作成する権限があるかどうかを判断し、可視 プロパティを使用して「作成」ボタンを適切に表示または非表示にします。
CreateButton.Visible =
DataSourceInfo( Accounts, DataSourceInfo.CreatePermission )
アクションを実行する前に確認を求める
Confirm 関数 を使用して、現在の画面の上にダイアログ ボックスを表示します。
Notify( Confirm( "Are you sure?",
{ ConfirmButton: "Yes", CancelButton: "No" }
)
)
Yes ボタンが押された場合は true の通知を表示し、No ボタンが押された場合は false の通知を表示します。
ユーザーへの通知
通知機能 を呼び出すことにより、アプリ ユーザーに通知を表示できます。
注意
NotificationType.Success
は、現在サポートされておらず、情報通知タイプになります。
Notify( "Model-driven app notification message" )
その他の例
URL を起動する
Launch("https://www.bing.com");
1:N プロパティにアクセス
Self.Selected.Item.'Recurring Appointments'
関連レコードのプロパティを確認する
Self.Selected.Item.'Parent Account'.'Account Name'="parent"
サポートされていない機能
以下の Power Fx 関数は、現在、モデル駆動型アプリでのコマンドには対応していません。
- Back()
- Clear()
- Collect()
- Copy()
- Disable()
- Enable()
- Exit()
- InvokeControl()
- Language()
- LoadData()
- Param()
- 印刷()
- ReadNFC()
- RequestHide()
- ResetForm()
- Revert()
- SaveData()
- ScanBarcode()
- Set()
- SubmitForm()
- UpdateContext()
- User()
- ViewForm()
サポートされていない列挙型
- Align
- AlignInContainer
- BarcodeType
- BorderStyle
- Color
- Direction
- DisplayMode
- Font
- FontWeight
- FormPattern
- GridStyle
- ImagePosition
- ImageRotation
- LabelPosition
- Layout
- LayoutAlignItems
- LayoutDirection
- LayoutJustifyContent
- LayoutMode
- LayoutOverflow
- ListItemTemplate
- MapStyle
- Overflow
- PDFPasswordState
- PenMode
- RemoveFlags
- ScreenTransition
- TeamsTheme
- TextFormat
- TextMode
- TextPosition
- Themes
- Transition
- VerticalAlign
- VirtualKeyboardMode
- Zoom
その他のサポートされていない領域
- Acceleration
- アプリケーション
- コンパス
- 接続
- Dataverse ファイルの種類列
- Environment
- Host
- Layout
- 場所
- ScreenSize