演習 - 活動ページを使用してロール センター ページを作成する

完了

シナリオ

たとえば、CRONUS International Ltd. のデベロッパーで、ロール センターのページを作成し、ロール センターにいくつかのキューを表示するとします。

タスク

  • 新しい拡張機能を作成します。

  • キュー テーブルを作成します。

  • 活動ページを作成します。

  • ロール センター ページを作成し、ロール センターに活動ページを追加します。

  • クエリを作成し、それを使用してキュー テーブルのフィールドにデータを追加します。

  • キュー テーブルの更新

  • アクティビティ ページを更新します。

  • プロファイルの作成

  • 拡張機能の公開

手順

新しい拡張機能を作成する

  1. Visual Studio Code を開始します。

  2. 表示 > 拡張機能 (Ctrl + Shift + X) を選択します。

  3. Marketplace の拡張機能を検索する検索ボックスに、AL 言語と入力します。

  4. 緑のインストール ボタンを選択します。

  5. 新しい AL 拡張機能プロジェクトを作成します。 表示 > コマンド パレット... (Ctrl+Shift+P) を選択します。

  6. 検索ボックスに AL: Go! と入力し、一覧からコマンドを選択します。

  7. 提示されたパスを受け入れます (または別のパスを入力します)。

  8. 最新 (最高) バージョンの Business Central ターゲット プラットフォームを選択します。

  9. 開発エンドポイントとして、Microsoft クラウド サンドボックスを選択します。

  10. アプリケーション記号をダウンロードします。 表示 > コマンド パレット... (Ctrl+Shift+P) を選択します。

  11. 検索ボックスに AL: Download symbolsと入力し、一覧からコマンドを選択します。

  12. 要求された場合は、組織の資格情報 (Microsoft 365 アカウントまたは Microsoft Entra ID アカウント) を入力します。

  13. app.json ファイルを開き、名前設定を Role Center Example に変更します。 発行元の設定を Cronus International Ltd. に変更します。

  14. HelloWorld.al ファイルを削除します。

キュー テーブルを作成する

  1. ファイル > 新規ファイルを選択し、ファイル > 保存を選択してこのファイルを保存します。 SalesInvoiceCue.Table.al というファイル名を使用します。

  2. コード スニペットを使用して、このファイル内に新しいテーブルを作成します。 ttable と入力し、Tab キーを押します。

  3. ID50130 に、名前Sales Invoice Cue に変更します。

  4. DataClassification プロパティを CustomerContent に設定し、Caption プロパティを Sales Invoice Cue に設定します。

  5. 自分のフィールド フィールドを削除します。

  6. 表に次のフィールドを作成します。 tfield スニペットを使用できます。

    フィールド番号 フィールド名 データ型 長さ
    1 主キー コード 10
    2 売上請求書 - オープン 整数
    3 売上請求書 - リリース済 整数
    4 今月の売上 10 進
  7. テーブル内の各フィールドにDataClassification プロパティを設定します。ただし売上請求書 - オープン売上請求 - リリース済フィールド、CustomerContent までは除きます。

  8. テーブル内の各フィールドに対して Caption プロパティを設定します。

  9. 主キーを主キーに設定します。

  10. 売上請求書 - オープン フィールドの FieldClass プロパティを FlowField に設定します。 CalcFormula プロパティを次に設定します。

     CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), 
                                              Status = const(Open)));
    
  11. 売上請求書 - リリース済 フィールドの FieldClass プロパティを FlowField に設定します。 CalcFormula プロパティを次に設定します。

     CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), 
                                              Status = const(Released)));
    
  12. キュー テーブルは次のようになります。

table 50130 "Sales Invoice Cue"
{
    DataClassification = CustomerContent;
    Caption = 'Sales Invoice Cue';

    fields
    {
        field(1; "Primary Key"; code[10])
        {
            DataClassification = CustomerContent;
            Caption = 'Primary Key';
        }
        field(2; "Sales Invoice - Open"; Integer)
        {
            Caption = 'Sales Invoice - Open';
            FieldClass = FlowField;
            CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Open)));
        }
        field(3; "Sales Invoice - Released"; Integer)
        {
            Caption = 'Sales Invoice - Released';
            FieldClass = FlowField;
            CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Released)));
        }
        field(4; "Sales this Month"; Decimal)
        {
            DataClassification = CustomerContent;
            Caption = 'Sales this Month';
        }
    }

    keys
    {
        key(Pk; "Primary Key")
        {
            Clustered = true;
        }
    }
}

アクティビティ ページを作成します。

  1. ファイル > 新規ファイルを選択し、ファイル > 保存を選択してこのファイルを保存します。 SalesInvoiceActivities.Page.al というファイル名を使用します。

  2. コード スニペットを使用して、このファイル内に新しいページを作成します。 tpage と入力してから、Tab キーを押します。

  3. ID50130 に、名前売上請求書アクティビティ に変更します。

  4. SourceTable プロパティを Sales Invoice Cue に設定し、キャプション プロパティを 売上請求書アクティビティ に設定します。

  5. PageType プロパティを カードパート に設定します。 UsageCategory プロパティと ApplicationArea プロパティを削除します。

  6. コンテンツ領域がレイアウト セクションに作成されていることを確認します。 作成されていない場合は、コンテンツと呼ばれる領域を作成します。

  7. 最初のグループの名前を売上請求書に変更します。 cuegroupgroupコントロールを変更します。 cuegroup グループの キャプション プロパティを売上請求書に設定します。

  8. cuegroup 内のすべてのフィールドを追加します。 ApplicationArea プロパティを All に設定します。 主キー フィールドをページに追加しないでください。

  9. すべてのフィールドにToolTipプロパティが 設定されている必要があります。

  10. OnOpenPage トリガーに、次のコードを追加します。

     if not Rec.Get() then begin
         Rec.Init();
         Rec.Insert();
     end;
    
  11. アクション セクションをページから削除します。

  12. アクティビティ テーブルは次のようになります。

page 50130 "Sales Invoice Activities"
{
    PageType = CardPart;
    SourceTable = "Sales Invoice Cue";
    Caption = 'Sales Invoice Activities';

    layout
    {
        area(Content)
        {
            cuegroup("Sales Invoice")
            {
                Caption = 'Sales Invoice';

                field("Sales Invoice - Open"; Rec."Sales Invoice - Open")
                {
                    ToolTip = 'Specifies the value of the Sales Invoice - Open field.';
                    ApplicationArea = All;
                }
                field("Sales Invoice - Released"; Rec."Sales Invoice - Released")
                {
                    ToolTip = 'Specifies the value of the Sales Invoice - Released field.';
                    ApplicationArea = All;
                }
                field("Sales this Month"; Rec."Sales this Month")
                {
                    ToolTip = 'Specifies the value of the Sales this Month field.';
                    ApplicationArea = All;
                }
            }
        }
    }
    trigger OnOpenPage()
    begin
        if not Rec.Get() then begin
            Rec.Init();
            Rec.Insert();
        end;
    end;
}

ロール センター ページを作成し、ロール センターにアクティビティ ページを追加します。

  1. ファイル > 新規ファイルを選択し、ファイル > 保存を選択してこのファイルを保存します。 MyRoleCenter.Page.al というファイル名を使います。

  2. コード スニペットを使用して、このファイル内に新しいページを作成します。 tpage と入力してから、Tab キーを押します。

  3. ID50131 に、名前My Role Center に変更します。

  4. SourceTable プロパティを削除し、PageType プロパティを RoleCenter に変更します。

  5. レイアウト セクションのコンテンツエリアを削除し、新しい rolecenter 領域をレイアウト セクションに追加します。

  6. アクション セクションとグローバル変数 myInt を削除します。

  7. 売上請求書アクティビティ ページの売上請求書アクティビティの名前のパーツを rolecenter 領域に追加します。

layout
{
    area(RoleCenter)
    {
        part("Sales Invoice Activities"; "Sales Invoice Activities")
        {
            ApplicationArea = All;
        }
    }
}

クエリを作成し、それを使用してキュー テーブルのフィールドにデータを追加します。

  1. ファイル > 新規ファイルを選択し、ファイル > 保存を選択してこのファイルを保存します。 CustomLedgEntrySales.Query.al ファイル名を使用します。

  2. コード スニペットを使用して、このファイル内に新しいページを作成します。 tquery と入力してから、Tab キーを押します。

  3. ID50130 に、名前顧客元帳エントリ販売 に変更します。

  4. QueryType プロパティを 標準に設定します。

  5. dataitem顧客元帳エントリに設定します。

  6. ドキュメント タイプ転記日付のフィルター列を追加します。

  7. 販売 (LCY)の列を 1 つ追加し、Sumメソッドを指定します。

  8. OnBeforeOpen トリガーを削除します。

query 50130 "Custom Ledg. Entry Sales"
{
    QueryType = Normal;

    elements
    {
        dataitem(CustLedgerEntry; "Cust. Ledger Entry")
        {
            column(SumSalesLCY; "Sales (LCY)")
            {
                Method = Sum;
            }
            filter(DocumentTypeFilter; "Document Type")
            {
            }
            filter(PostingDateFilter; "Posting Date")
            {
            }
        }
    }
}

キュー テーブルの更新

  1. SalesInvoiceCue.Table.al ファイルを開き、CalcSalesThisMonth という名前でパブリック プロシージャを作成します。 データ型 10 進の変数を返します。

  2. 次に、codeunit に次のコードを追加します。

    procedure CalcSalesThisMonthAmount() Amount: Decimal
    var
        CustLedgerEntry: Record "Cust. Ledger Entry";
        CustomLedgEntrySales: Query "Custom Ledg. Entry Sales";
    begin
        CustomLedgEntrySales.SetRange(DocumentTypeFilter, CustLedgerEntry."Document Type"::Invoice);
        CustomLedgEntrySales.SetRange(PostingDateFilter, CalcDate('<-CM>', Workdate()), Workdate());

        CustomLedgEntrySales.Open();
        if CustomLedgEntrySales.Read() then
            Amount := CustomLedgEntrySales.SumSalesLCY;
        CustomLedgEntrySales.Close();
    end;

アクティビティ ページを更新します。

  1. SalesInvoiceActivities.Page.al ページを開きます。

  2. ページに OnAfterGetRecord トリガーを作成し、トリガーに次のコードを追加します。

    Rec."Sales This Month" := Rec.CalcSalesThisMonthAmount();
    
  3. 今月の売上フィールドの DrillDownPageID プロパティを顧客の元帳エントリに設定します。

プロファイルの作成

  1. ファイル > 新規ファイルを選択し、ファイル > 保存を選択してこのファイルを保存します。 ファイル名 MyProfile.Profile.al を使用します。

  2. コード スニペットを使用して、このファイル内に新しいページを作成します。 tprofile と入力し、Tab キーを押します。

  3. そのため、コードを次のように変更するとします。

profile MyProfile 
{
    Caption = 'My Profile';
    RoleCenter = "My Role Center";
}

拡張機能の公開

  1. 拡張機能をサンドボックスに公開します。 表示 > コマンド パレット (Ctrl + Shift + P) を選択します。

  2. 検索ボックスに AL: Publish と入力し (または F5 キーボード ショートカットを押し)、一覧からコマンドを選択します。

  3. [設定 ] アイコンから [自分の設定] を開きます。

  4. 新しく作成したロール センターをテストするには、ロールマイ プロファイルに変更します。