構成済み ER コンポーネントを検査して、ランタイムの問題を回避する
すべての構成済み電子レポート (ER)形式とモデル マッピング コンポーネントは、設計時に検証できます。 この検証では、実行エラーやパフォーマンスの低下など、発生する可能性のあるランタイムの問題を防ぐために、整合性チェックが実行されます。 このチェックでは、検出された問題ごとに、問題のある要素のパスを提供します。 一部の問題については、自動修正が利用できます。
既定では、前述の ER コンポーネントを含む ER 構成について、次の場合に検証が自動的に適用されます:
- ER 構成の新しい バージョン を Microsoft Dynamics 365 Finance のインスタンスに インポート します。
- 編集可能な ER 構成の状態を ドラフト から 完了 に変更します。
- 新しい基本バージョンを適用することにより、編集可能な ER 構成を リベース します。
この検証を明示的に実行することもできます。 次の 3 つのオプションのいずれかを選択し、指定されている手順に従います:
オプション 1:
- 組織管理 > 電子申告 > コンフィギュレーションの順に移動します。
- 左側のペインにある構成ツリーで、ER 形式または ER モデル マッピング コンポーネントを含む目的の ER 構成を選択します。
- バージョン クイック タブで、選択した ER 構成の目的のバージョンを選択します。
- アクション ペインで、検証を選択します。
オプション 2、ER 形式の場合:
- 組織管理 > 電子申告 > コンフィギュレーションの順に移動します。
- 左側のペインにある構成ツリーで、ER 形式のコンポーネントを含む目的の ER 構成を選択します。
- バージョン クイック タブで、選択した ER 構成の目的のバージョンを選択します。
- アクション ウィンドウで、デザイナーを選択します。
- 形式デザイナー ページのアクション ペインで、検証 を選択します。
オプション 3、ER モデル マッピングの場合:
- 組織管理 > 電子申告 > コンフィギュレーションの順に移動します。
- 左側のペインにある構成ツリーで、ER モデル マッピング コンポーネントを含む目的の ER 構成を選択します。
- バージョン クイック タブで、選択した ER 構成の目的のバージョンを選択します。
- アクション ウィンドウで、デザイナーを選択します。
- モデルからデータ ソースへのマッピング ページのアクション ペインで、デザイナー を選択します。
- モデル マッピング デザイナー ページのアクション ペインで、検証 を選択します。
構成のインポート時に、検証をスキップするには、次の手順に従います。
- 組織管理 > 電子申告 > コンフィギュレーションの順に移動します。
- 構成ページ、アクション ウィンドウ、構成タブ、詳細設定グループで、ユーザー パラメーターを選択します。
- インポート後に構成を検証 オプションを いいえ に設定します。
バージョンの状態を変更またはリベースするときに検証をスキップするには、次の手順を実行します。
- 組織管理 > 電子申告 > コンフィギュレーションの順に移動します。
- 構成ページ、アクション ウィンドウ、構成タブ、詳細設定グループで、ユーザー パラメーターを選択します。
- 構成状態の変更時およびリベース時に検証をスキップ オプションを はい に設定します。
ER では、次のカテゴリを使用して、整合性チェック検査をグループ化します:
- 実行可能性 – 実行時に発生する可能性がある重大な問題を検出する検査。 これらの問題は、ほとんどが エラー レベルです。
- パフォーマンス – 構成済み ER コンポーネントの非効率な実行を引き起こす可能性のある問題を検出する検査。 これらの問題は、ほとんどが 警告 レベルです。
- データの整合性 – データ損失または実行時の問題を引き起こす可能性のある問題を検出する検査。 これらの問題は、ほとんどが 警告 レベルです。
検査の一覧
次の表は、ER が提供する検査の概要を示します。 これらの検査の詳細については、最初の列のリンクを使用して、この記事の関連するセクションを参照してください。 これらのセクションでは、ER が検査を提供するコンポーネントのタイプと、問題を防ぐために ER コンポーネントを再構成する方法について説明します。
氏名 | カテゴリ | レベル | メッセージ |
---|---|---|---|
型変換 | 実行可能性 | エラー |
タイプ <type> の式をタイプ <type> のフィールドに変換できません。 ランタイム エラー: タイプの例外 |
タイプの互換性 | 実行可能性 | エラー |
構成済みの式は、現在の形式要素をデータ ソースにバインドするために使用できません。この式が、現在の形式要素のタイプ <type> でサポートされているデータ型の範囲を超えたデータ型 <type> の値を返すためです。 ランタイム エラー: タイプの例外 |
構成要素の欠落 | 実行可能性 | エラー |
パスが見つかりません <path>。 ランタイム エラー: 構成要素 <path> が見つかりません |
FILTER 関数による式の実行可能性 | 実行可能性 | エラー |
FILTER 関数のリスト式がクエリ可能ではありません。 ランタイム エラー: フィルター処理はサポートされていません。 構成を検証して、詳細を取得します。 |
GROUPBY データ ソースの実行可能性 | 実行可能性 | エラー | パス <path> は、クエリをサポートしていません。 |
実行可能性 | エラー |
Group by 関数はクエリで実行できません。 ランタイム エラー: グループ化関数はクエリで実行できません。 |
|
JOIN データ ソースの実行可能性 | 実行可能性 | エラー |
クエリのフィルターではないリスト <path> を結合できません。 ランタイム エラー: 関数結合された datasource は、計算済フィールドが正しく呼び出されていないフィルター式である必要があります。 |
FILTER 関数 対 WHERE 関数の優先度 | パフォーマンス | 警告 | パフォーマンスの観点から、式には WHERE 関数よりも FILTER 関数を使用することをお勧めします。 [修正] を選択すると、自動的に置換します。 |
ALLITEMSQUERY 関数 対 ALLITEMS 関数の優先度 | パフォーマンス | 警告 | パフォーマンスの観点から、式には ALLITEMS 関数よりも ALLITEMSQUERY 関数を使用することをお勧めします。 [修正] を選択すると、自動的に置換します。 |
空リストの場合の考慮 | 実行可能性 | 警告 |
リスト <パス> に空リストの場合のチェックがなく、実行時にエラーが発生する可能性があります。 空リストの場合のチェックを追加します。 ランタイム エラー: リストは <path> で空です 潜在的な問題: 入力元のデータ ソースに複数のレコードが含まれているときに、行が 1 回入力されます |
FILTER 関数による式の実行可能性 (キャッシュ) | 実行可能性 | エラー |
FILTER 関数を、選択したデータ ソースのタイプに適用することはできません。 テーブル レコード タイプのデータ ソースは、キャッシュされておらず、入れ子にされたデータ ソースが手動で追加されていない場合にのみ適用できます。 ランタイム エラー: フィルター処理はサポートされていません。 構成を検証して、詳細を取得します。 |
バインドの欠落 | 実行可能性 | 警告 |
パス <path> は、モデルのマッピングを使用しているどの datasource にもバインドされません。 ランタイム エラー: パス <path> がバインドされていません |
リンクされていないテンプレート | データの整合性 | 警告 | ファイル <name> はファイル コンポーネントにリンクされておらず、構成バージョンの状態の変更後に削除されます。 |
未同期形式 | データの整合性 | 警告 | 定義名 <component name> は Excel シート <sheet name> には存在しません |
未同期形式 | データの整合性 | 警告 |
<タグ付けされた Word コンテンツ コントロール> タグが Word テンプレート ファイルに存在しない ランタイム エラー: <タグ付けされた Word コンテンツ コントロール> タグが Word テンプレート ファイルに存在しません。 |
既定のマッピングなし | データの整合性 | エラー |
複数のモデル マッピングが、<モデル名 (ルート記述子)> データ モデルに対して、構成 <コンマで区切られた構成名> に存在します。 構成の 1 つを既定として設定する ランタイム エラー: 複数のモデル マッピングが、<モデル名 (ルート記述子)> データ モデルに対して、構成 <コンマで区切られた構成名> に存在します。 構成の 1 つを既定として設定します。 |
ヘッダーまたはフッター コンポーネントの設定不整合 | データの整合性 | エラー |
ヘッダー/フッター (<コンポーネント タイプ: ヘッダーまたはフッター>) に不整合がある ランタイム: 最後の構成済コンポーネントが、構成済の電子申告形式の下書きバージョンを実行する場合に、実行時に使用されます。 |
ページ コンポーネントの設定における不整合 | データの整合性 | エラー | レプリケーションのない範囲のコンポーネントが複数あります。 不必要なコンポーネントを削除してください。 |
ORDERBY 関数による式の実行可能性 | 実行可能性 | エラー |
ORDERBY 関数のリスト式がクエリ可能ではありません。 ランタイム エラー: 並べ替えはサポートされていません。 構成を検証して、詳細を取得します。 |
廃止されたアプリケーション コンポーネント | データの整合性 | 警告 |
要素 <path> は廃止としてマークされています。 ランタイム エラー サンプル: クラス '<path>' が見つかりません。 |
型変換
ER では、データ モデル フィールドのデータ型が、そのフィールドのバインドとして構成されている式のデータ型と互換性があるかどうかを確認します。 データ型に互換性がない場合は、ER モデル マッピング デザイナーで検証エラーが発生します。 受信するメッセージは、ER がタイプ A の式をタイプ B のフィールドに変換できないことを示しています。
次の手順は、この問題がどのように発生するかを示しています。
ER データ モデルと ER モデル マッピング コンポーネントの構成を同時に開始します。
データ モデル ツリーで、X という名前のフィールドを追加 し、データ型として 整数 を選択します。
モデル マッピング デザイナーの、データ ソース ペインで、計算済みフィールド タイプのデータ ソースを追加します。
新しいデータソースに Y と名前を付けて、式
INTVALUE(100)
を含むように構成します。X を Y にバインドします。
データ モデル デザイナーで、X フィールドのデータ型を 整数 から Int64 に変更します。
検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査します。
検証 を選択して、構成 ページで選択した ER 構成のモデル マッピング コンポーネントを検査します。
検証エラーが発生することに注意してください。 このメッセージは、Y データ ソースの
INTVALUE(100)
式が返す 整数 タイプの値を、Int64 タイプの X データ モデル フィールドに格納できないことを示しています。
次の図は、警告を無視し、実行 を選択して、モデル マッピングを使用するように構成された形式を実行した場合に発生するランタイム エラーを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
データ モデル フィールドのデータ型を変更して、そのフィールドのバインドに対して構成された式のデータ型と一致するように、データ モデルの構造を更新します。 前の例では、X フィールドのデータ型を 整数 に戻す必要があります。
オプション 2
データ モデル フィールドに関連付けられたデータ ソースの式を変更することにより、モデル マッピングを更新します。 前の例では、Y データ ソースの式を INT64VALUE(100)
に変更する必要があります。
タイプの互換性
ER では、形式要素のデータ型が、その形式要素のバインドとして構成されている式のデータ型と互換性があるかどうかを確認します。 データ型に互換性がない場合は、ER 操作デザイナーで検証エラーが発生します。 受信するメッセージは、構成済みの式が現在の形式要素をデータ ソースにバインドするために使用できないことを示しています。これは、式が、現在の形式要素のタイプ Bでサポートされているデータ型の範囲を超えるデータ型 A の値を返すためです。
次の手順は、この問題がどのように発生するかを示しています。
ER データ モデルと ER 形式コンポーネントの構成を同時に開始します。
データ モデル ツリーで、X という名前のフィールドを追加 し、データ型として 整数 を選択します。
形式構造ツリーで、数値 タイプの形式要素を追加します。
新しい形式要素 Y に名前を付けます。数値タイプ フィールドで、データ型として 整数 を選択します。
X を Y にバインドします。
形式構造ツリーで、Y 形式要素のデータ型を 整数 から Int64 に変更します。
検証 を選択して、形式デザイナー ページで編集可能な形式コンポーネントを検査します。
検証エラーが発生することに注意してください。 メッセージは、構成済みの式が Int64 値のみを受け入れることができることを示しています。 したがって、整数 タイプの X データ モデル フィールドの値を Y 形式要素に入力することはできません。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
数値 形式要素のデータ型を変更して、その要素のバインドに対して構成された式のデータ型と一致するように、形式構造を更新します。 前の例では、X 形式要素の 数値タイプ の値を 整数 に戻す必要があります。
オプション 2
model.X
から INT64VALUE(model.X)
に式をに変更して、X 形式要素の形式マッピングを更新します。
構成要素の欠落
ER は、編集可能な ER コンポーネントで構成されているデータソースだけがバインド式に含まれているかどうかをを確認します。 編集可能な ER コンポーネントに存在しないデータ ソースを含むすべてのバインドで、ER 操作デザイナーまたは ER モデル マッピング デザイナーで検証エラーが発生します。
次の手順は、この問題がどのように発生するかを示しています。
ER データ モデルと ER モデル マッピング コンポーネントの構成を同時に開始します。
データ モデル ツリーで、X という名前のフィールドを追加 し、データ型として 整数 を選択します。
モデル マッピング デザイナーの、データ ソース ペインで、計算済みフィールド タイプのデータ ソースを追加します。
新しいデータソースに Y と名前を付けて、式
INTVALUE(100)
を含むように構成します。X を Y にバインドします。
モデル マッピング デザイナーの、データ ソース ペインで、Y データ ソースを削除します。
検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査します。
検証エラーが発生することに注意してください。 メッセージは、X データ モデル フィールドのバインドに Y データソースを参照するパスが含まれているが、このデータ ソースは見つからないことを示しています。
自動解決
バインドの解除 を選択して、欠落したデータ ソース バインドを削除することで、この問題を自動的に修正します。
手動解決
オプション 1
X データ モデル フィールドのバインドを解除して、存在しない Y データ ソースを参照しないようにします。
オプション 2
モデル マッピング デザイナーのデータ ソース ペインで、Y データ ソースを再度追加します。
FILTER 関数による式の実行可能性
組み込み FILTER ER 関数は、アプリケーション テーブル、ビュー、またはデータ エンティティにアクセスするために使用され、1 回の SQL 呼び出しを行うことで、必要なデータをレコードの一覧として取得します。 レコード リスト タイプのデータソース は、この関数の引数として使用され、呼び出しのアプリケーション ソースを指定します。 ERは、FILTER
関数で参照されるデータ ソースに対して直接 SQL クエリを確立できるかどうかを確認します。 直接クエリを確立できない場合、ER モデル マッピング デザイナーで検証エラーが発生します。 受信するメッセージは、FILTER
関数を含む ER 式を実行時に実行できないことを示しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
計算済フィールド タイプのデータ ソースを追加します。
新しいデータ ソースに FilteredVendor と名前を付けて、式
FILTER(Vendor, Vendor.AccountNum="US-101")
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、Vendor データ ソースの
FILTER(Vendor, Vendor.AccountNum="US-101")
式を照会できることを確認します。計算済フィールド タイプの入れ子になったフィールドを追加して、Vendor データ ソースを変更し、トリムされた仕入先番号を取得します。
新しい入れ子になったフィールドに $AccNumber と名前を付けて、式
TRIM(Vendor.AccountNum)
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、Vendor データ ソースの
FILTER(Vendor, Vendor.AccountNum="US-101")
式を照会できることを確認します。Vendor データ ソースには、FilteredVendor データソースの式を直接 SQL ステートメントに変換できない 計算済フィールド タイプの入れ子になったフィールドが含まれているため、検証エラーが発生することに注意してください。
次の図は、警告を無視し、実行 を選択して、モデル マッピングを使用するように構成された形式を実行した場合に発生するランタイム エラーを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
計算済フィールド タイプの入れ子になったフィールドを Vendor データ ソースに追加するのではなく、$AccNumber の入れ子になったフィールドを FilteredVendor データ ソースに追加し、式 TRIM(FilteredVendor.AccountNum)
を含むように構成します。 このようにして、FILTER(Vendor, Vendor.AccountNum="US-101")
式を SQL レベルで実行し、$AccNumber の入れ子になったフィールドを後で計算することができます。
オプション 2
FilteredVendor データ ソースの式を FILTER(Vendor, Vendor.AccountNum="US-101")
から WHERE(Vendor, Vendor.AccountNum="US-101")
に変更します。 すべてのレコードがフェッチされ、必要なレコードの選択がメモリ内で行われるため、大量のデータ (トランザクション テーブル) があるテーブルの式を変更することはお勧めしません。 したがって、この方法ではパフォーマンスが低下する可能性があります。 詳細については、WHERE ER 関数 を参照してください。
GROUPBY データ ソースの実行可能性
GROUPBY データ ソースは、通常は各グループで 1 つ以上の集計を実行する目的で、クエリ結果をレコードのグループに分割します。 すべての GROUPBY データ ソースは、データベース レベルまたはメモリ内のいずれかで実行されるように構成できます。 GROUPBY データ ソースが、データベース レベルで実行されるように構成されている場合、ER はそのデータ ソースで参照されているデータ ソースに対して直接 SQL クエリを確立できるかどうかを確認します。 直接クエリを確立できない場合、ER モデル マッピング デザイナーで検証エラーが発生します。 受信するメッセージは、構成された GROUPBY データ ソースを実行時に実行できないことを示しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Trans と名前を付けます。テーブル フィールドで、VendTrans を選択して、このデータ ソースが VendTrans テーブルを要求するように指定します。
Group by タイプのデータ ソースを追加します。
新しいデータ ソースに GroupedTrans と名前を付けて、次のように構成します:
- グループ化するレコードのソースとして Trans データ ソースを選択します。
- 実行場所 フィールドで クエリ を選択し、このデータ ソースをデータベース レベルで実行することを指定します。
検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、構成済み GroupedTrans データ ソースを照会できることを確認します。
計算済フィールド タイプの入れ子になったフィールドを追加して、Trans データ ソースを変更し、トリムされた仕入先番号を取得します。
新しいデータ ソースに $AccNumber と名前を付けて、式
TRIM(Trans.AccountNum)
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、構成済み GroupedTrans データ ソースを照会できることを確認します。
Trans データ ソースには、GroupedTrans データソースの呼び出しを直接 SQL ステートメントに変換できない 計算済フィールド タイプの入れ子になったフィールドが含まれているため、検証エラーが発生することに注意してください。
次の図は、警告を無視し、実行 を選択して、モデル マッピングを使用するように構成された形式を実行した場合に発生するランタイム エラーを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
計算済フィールド タイプの入れ子になったフィールドを Trans データ ソースに追加するのではなく、GroupedTrans データ ソースの GroupedTrans.lines 項目に、$AccNumber の入れ子になったフィールドを追加し、式 TRIM(GroupedTrans.lines.AccountNum)
を含むように構成します。 このようにして、GroupedTrans データ ソースを SQL レベルで実行し、$AccNumber の入れ子になったフィールドを後で計算することができます。
オプション 2
GroupedTrans データ ソースの 実行場所 フィールドの値を クエリ から メモリ内 に変更します。 すべてのレコードがフェッチされ、グループと集計がメモリ内で行われるため、大量のデータ (トランザクション テーブル) があるテーブルの値を変更することはお勧めしません。 したがって、この方法ではパフォーマンスが低下する可能性があります。
JOIN データ ソースの実行可能性
JOIN データ ソースは、関連するフィールドに基づいて 2 つ以上のデータベース テーブルのレコードを組み合わせたものです。 すべての JOIN データ ソースは、データベース レベルまたはメモリ内のいずれかで実行されるように構成できます。 JOIN データ ソースが、データベース レベルで実行されるように構成されている場合、ER はそのデータ ソースで参照されているデータ ソースに対して直接 SQL クエリを確立できるかどうかを確認します。 1 つ以上の参照データソースで直接 SQL クエリを確立できない場合、ER モデル マッピング デザイナーで検証エラーが発生します。 受信するメッセージは、構成された JOIN データ ソースを実行時に実行できないことを示しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Trans と名前を付けます。テーブル フィールドで、VendTrans を選択して、このデータ ソースが VendTrans テーブルを要求するように指定します。
計算済フィールド タイプのデータソースを Vendor データソースの入れ子になったフィールドとして追加します。
新しいデータ ソースに FilteredTrans と名前を付けて、式
FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
を含むように構成します。Join タイプのデータ ソースを追加します。
新しいデータ ソースに JoinedList と名前を付けて、次のように構成します:
- Vendor データ ソースを、結合するレコードの最初のセットとして追加します。
- Vendor.FilteredTrans データ ソースを、結合するレコードの 2 番目のセットとして追加します。 タイプとして INNER を選択します。
- 実行 フィールドで クエリ を選択し、このデータ ソースをデータベース レベルで実行することを指定します。
検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、構成済み JoinedList データ ソースを照会できることを確認します。
Vendor.FilteredTrans データ ソースの式を
FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
からWHERE(Trans, Trans.AccountNum=Vendor.AccountNum)
に変更します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、構成済み JoinedList データ ソースを照会できることを確認します。
Vendor.FilteredTrans データ ソースの式を直接 SQL 呼び出しに変換できないため、検証エラーが発生することに注意してください。 さらに、直接 SQL 呼び出しでは、JoinedList データソースに対する呼び出しを、直接 SQL ステートメントに変換することはできません。
次の図は、警告を無視し、実行 を選択して、モデル マッピングを使用するように構成された形式を実行した場合に発生するランタイム エラーを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
警告に従って、Vendor.FilteredTrans データ ソースの式を WHERE(Trans, Trans.AccountNum=Vendor.AccountNum)
から FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
に戻します。
オプション 2
JoinedList データ ソースの 実行 フィールドの値を クエリ から メモリ内 に変更します。 すべてのレコードがフェッチされ、結合がメモリ内で行われるため、大量のデータ (トランザクション テーブル) があるテーブルの値を変更することはお勧めしません。 したがって、この方法ではパフォーマンスが低下する可能性があります。 このリスクを通知する検証警告が表示されます。
FILTER 関数 対 WHERE 関数の優先度
組み込み FILTER ER 関数は、アプリケーション テーブル、ビュー、またはデータ エンティティにアクセスするために使用され、1 回の SQL 呼び出しを行うことで、必要なデータをレコードの一覧として取得します。 WHERE 関数は、指定されたソースからすべてのレコードをフェッチし、メモリ内でレコード選択を行います。 レコード リスト タイプのデータ ソースは、両方の関数の引数として使用され、レコードを取得するためのソースを指定します。 ERは、WHERE 関数で参照されるデータ ソースに対して直接 SQL 呼び出しを確立できるかどうかを確認します。 直接呼び出しを確立できない場合、ER モデル マッピング デザイナーで検証警告が発生します。 受信するメッセージは、効率を向上させるために、WHERE 関数の代わりに FILTER 関数を使用することを推奨しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Trans と名前を付けます。テーブル フィールドで、VendTrans を選択して、このデータ ソースが VendTrans テーブルを要求するように指定します。
計算済フィールド タイプのデータソースを Vendor データソースの入れ子になったフィールドとして追加します。
新しいデータ ソースに FilteredTrans と名前を付けて、式
WHERE(Trans, Trans.AccountNum="US-101")
を含むように構成します。Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
計算済フィールド タイプのデータ ソースを追加します。
新しいデータ ソースに FilteredVendor と名前を付けて、式
WHERE(Vendor, Vendor.AccountNum="US-101")
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査します。
検証の警告は、FilteredVendor および FilteredTrans データソースに対して WHERE 関数ではなく FILTER 機能を使用することを推奨しています。
自動解決
修正 を選択して、このタイプの検査の 警告 タブにあるグリッドに表示されるすべてのデータ ソースの式で、WHERE 関数を FILTER 関数に自動的に置き換えます。
または、グリッドで 1 つの警告の行を選択し、選択した修正 を選択することもできます。 この場合、式は、選択された警告で説明されているデータ ソースでのみ自動的に変更されます。
手動解決
WHERE 関数を FILTER 関数に置き換えることで、検証グリッド内のすべてのデータ ソースの式を手動で調整できます。
ALLITEMSQUERY 関数 対 ALLITEMS 関数の優先度
組み込みの ALLITEMS と ALLITEMSQUERY ER 関数は、指定したパスに一致するすべての項目を表すレコードの一覧から成るフラット化された レコード リスト の値を返します。 ER は、ALLITEMS 関数で参照されるデータ ソースに対して直接 SQL 呼び出しを確立できるかどうかを確認します。 直接呼び出しを確立できない場合、ER モデル マッピング デザイナーで検証警告が発生します。 受信するメッセージは、効率を向上させるために、ALLITEMS 関数の代わりに ALLITEMSQUERY 関数を使用することを推奨しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
計算済みフィールド タイプのデータ ソースを追加して、複数の仕入先のレコードを取得します。
新しいデータ ソースに FilteredVendor と名前を付けて、式
FILTER(Vendor, OR(Vendor.AccountNum="US-101",Vendor.AccountNum="US-102"))
を含むように構成します。計算済みフィールド タイプのデータ ソースを追加して、フィルターされたすべての仕入先のトランザクションを取得します。
新しいデータ ソースに FilteredVendorTrans と名前を付けて、式
ALLITEMS(FilteredVendor.'<Relations'.'VendTrans.VendTable_AccountNum')
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査します。
検証警告が発生することに注意してください。 このメッセージでは、FilteredVendorTrans データ ソースに ALLITEMS 関数の代わりに ALLITEMSQUERY 関数を使用することを推奨しています。
自動解決
修正 を選択して、このタイプの検査の 警告 タブにあるグリッドに表示されるすべてのデータ ソースの式で、ALLITEMS 関数を ALLITEMSQUERY 関数に自動的に置き換えます。
または、グリッドで 1 つの警告の行を選択し、選択した修正 を選択することもできます。 この場合、式は、選択された警告で説明されているデータ ソースでのみ自動的に変更されます。
手動解決
ALLITEMS 関数を ALLITEMSQUERY 関数に置き換えることで、検証グリッドに記載されているすべてのデータ ソースの式を手動で調整できます。
空リストの場合の考慮
ER 形式またはモデル マッピング コンポーネントを構成して、レコード リスト タイプのデータ ソースのフィールド値を取得することができ ます。 ERは、存在しないレコードのフィールドから値がフェッチされるときのランタイム エラーを防ぐために、呼び出されるデータ ソースにレコードが含まれていない (つまり空である) 場合を考慮して設計されているかどうかを確認します。
次の手順は、この問題がどのように発生するかを示しています。
ER データ モデル、ER モデル マッピング、ER モデル マッピング コンポーネントの構成を同時に開始します。
データ モデル ツリーで、Root3 という名前のルート項目を追加します。
レコード リスト タイプの入れ子になった項目を追加して、Root3 項目を変更します。
新しい入れ子になった項目 Vendor に名前を付けます。
次の方法で Vendor 項目を変更します:
- 文字列 タイプの入れ子になったフィールドを追加し、Name と名前を付けます。
- 文字列 タイプの入れ子になったフィールドを追加し、AccountNumber と名前を付けます。
モデル マッピング デザイナーの、データ ソース ペインで、Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
全般 \ ユーザー入力パラメーター タイプのデータ ソースを追加し、ランタイム ダイアログ ボックスで仕入先アカウントを検索します。
新しいデータ ソースに RequestedAccountNum と名前を付けます。 ラベル フィールドに、仕入先番号 を入力します。 操作のデータ型名 フィールドは、既定値の 説明 のままにします。
計算済フィールド タイプのデータ ソースを追加して、照会する仕入先をフィルター処理します。
新しいデータ ソースに FilteredVendor と名前を付けて、式
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
を含むように構成します。次の方法で、構成されたデータ ソースにデータ モデル項目をバインドします:
- FilteredVendor を Vendor にバインドします。
- FilteredVendor.AccountNum を Vendor.AccountNumber にバインドします。
- FilteredVendor.'name()' を Vendor.Name にバインドします。
形式構造ツリーで、次の項目を追加して、仕入先の詳細を含む送信ドキュメントを XML 形式で生成します:
Statement ルート XML 要素を追加します。
Statement XML 要素の場合は、入れ子になった Party XML 要素を追加します。
Party XML 要素の場合は、次の入れ子になった XML 属性を追加します:
- 氏名
- AccountNum
次の方法で、形式要素を指定されたデータ ソースにバインドします:
- Statement\Party\Name 形式要素を model.Vendor.Name データ ソース フィールドにバインドします。
- Statement\Party\AccountNum 形式要素を model.Vendor.AccountNumber データ ソース フィールドにバインドします。
検証 を選択して、形式デザイナー ページで編集可能な形式コンポーネントを検査します。
検証エラーが発生することに注意してください。 メッセージは、
model.Vendor
リストが空の場合、実行時に、構成済みの Statement\Party\Name と Statement\Party\AccountNum に対してエラーがスローされる可能性があることを示しています。
次の図は、警告を無視し、実行 を選択して形式を実行し、存在しない仕入先のアカウント番号を選択した場合に発生するランタイム エラーを示しています。 要求された仕入先が存在しないため、model.Vendor
リストは空になります (つまり、レコードが含まれていません)。
自動解決
警告 タブのグリッドで選択した行に対して、バインドの解除 を選択できます。 パス 列でポイントされているバインドは、形式要素から自動的に削除されます。
手動解決
オプション 1
Statement\Party\Name 形式要素を model.Vendor
データ ソース項目にバインドできます。 実行時に、このバインドは model.Vendor
データ ソースを最初に呼び出します。 model.Vendor
が、空のレコード リストを返す場合、入れ子になった形式要素は実行されません。 したがって、この形式構成に対して検証警告は発生しません。
オプション 2
Statement\Party\Name 形式要素のバインドを model.Vendor.Name
から FIRSTORNULL(model.Vendor).Name
に変更します。 更新されたバインドは、レコード リスト タイプの model.Vendor
データ ソースの最初のレコードを、レコード タイプの新しいデータ ソースに条件付きで変換します。 この新しいデータ ソースには、同じセットのフィールドが含まれています。
model.Vendor
データ ソースに使用可能なレコードが少なくとも 1 つある場合、そのレコードのフィールドには、model.Vendor
データ ソースの最初のレコードのフィールドの値が設定されます。 この場合、更新されたバインドは仕入先名を返します。- それ以外の場合は、作成されたレコードのすべてのフィールドは、そのフィールドのデータ型の既定値が設定されます。 この場合は、文字列 データ型の既定値として空白文字列を返します。
したがって、Statement\Party\Name の形式要素が、FIRSTORNULL(model.Vendor).Name
式にバインドされても、検証の警告は発生しません。
オプション 3
レコード リスト タイプの model.Vendor
データ ソースが、レコードを返さないときに (テキスト この例では 使用できません)、生成されるドキュメントに入力されるデータを明示的に指定する場合は、Statement\Party\Name 形式要素のバインドを model.Vendor.Name
から IF(NOT(ISEMPTY(model.Vendor)), model.Vendor.Name, "Not available")
に変更します。 式 IF(COUNT(model.Vendor)=0, model.Vendor.Name, "Not available")
を使用することもできます。
その他の考慮事項
検査では、別の潜在的な問題についても警告します。 既定では、Statement\Party\Name と Statement\Party\AccountNum の形式要素を レコード リスト タイプの model.Vendor
データ ソースの適切なフィールドにバインドすると、これらのバインドが実行され、model.Vendor
データ ソースの最初のレコードの適切なフィールドの値を取得します (リストが空でない場合)。
Statement\Party 形式要素を model.Vendor
データ ソースにバインドしていないため、形式の実行中に Statement\Party 要素は、model.Vendor
データ ソースの各レコードに対して反復処理されません。 代わりに、このリストに複数のレコードが含まれている場合、生成されるドキュメントには、レコード リストの最初のレコードからのみ情報が入力されます。 したがって、形式が model.Vendor
データ ソースのすべての仕入先に関する情報で、生成されたドキュメントを埋めることが目的の場合に、問題が発生することがあります。 この問題を修正するには、Statement\Party 要素を model.Vendor
データ ソースにバインドします。
FILTER 関数による式の実行可能性 (キャッシュ)
FILTER や ALLITEMSQUERY などの、複数の組み込み ER 関数は、アプリケーション テーブル、ビュー、またはデータ エンティティにアクセスするために使用され、1 回の SQL 呼び出しを行うことで、必要なデータをレコードの一覧として取得します。 レコード リスト タイプのデータソース は、これらの各関数の引数として使用され、呼び出しのアプリケーション ソースを指定します。 ERは、これらの関数の 1 つで参照されるデータ ソースに対して直接 SQL 呼び出しを確立できるかどうかを確認します。 データ ソースが キャッシュ としてマークされているために直接呼び出しを確立できない場合、ER モデル マッピング デザイナーで検証エラーが発生します。 受信するメッセージは、これたの関数の 1 つを含む ER 式を実行時に実行できないことを示しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
全般 \ ユーザー入力パラメーター タイプのデータ ソースを追加し、ランタイム ダイアログ ボックスで仕入先アカウントを検索します。
新しいデータ ソースに RequestedAccountNum と名前を付けます。 ラベル フィールドに、仕入先番号 を入力します。 操作のデータ型名 フィールドは、既定値の 説明 のままにします。
計算済フィールド タイプのデータ ソースを追加して、照会する仕入先をフィルター処理します。
新しいデータ ソースに FilteredVendor と名前を付けて、式
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
を含むように構成します。構成済み Vendor データ ソースをキャッシュとしてマークします。
検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査します。
検証エラーが発生することに注意してください。 このメッセージは、FILTER 関数が、キャッシュされた Vendor データ ソースに適用できないことを示しています。
次の図は、警告を無視し 実行 を選択して、形式を実行した場合に、発生するランタイム エラーを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
Vendor データ ソースから キャッシュ フラグを削除します。 その後、FilteredVendor データ ソースは実行可能になりますが、VendTable テーブルで参照される Vendor データ ソースは、FilteredVendor データ ソースが呼び出されるたびにアクセスされます。
オプション 2
FilteredVendor データ ソースの式を FILTER(Vendor, Vendor.AccountNum="US-101")
から WHERE(Vendor, Vendor.AccountNum="US-101")
に変更します。 この場合、VendTable テーブルで参照される Vendor データ ソースは、Vendor データ ソースの最初の呼び出し中にのみアクセスされます。 ただし、レコードの選択はメモリ内で行われます。 したがって、この方法ではパフォーマンスが低下する可能性があります。
バインドの欠落
ER 形式コンポーネントを構成する場合、基本 ER データ モデルは ER 形式の既定のデータ ソースとして提供されます。 構成済み ER 形式を実行すると、基本モデルの 既定のモデル マッピング が使用され、データ モデルにアプリケーション データが入力されます。 ER 形式デザイナーは、編集可能な形式の既定のモデル マッピングとして、現在選択されているモデル マッピングのどのデータ ソースにもバインドされていないデータ モデル項目に、形式要素をバインドした場合、警告を表示します。 このタイプのバインドは、実行される形式がバインド要素をアプリケーション データで埋めることができないため、実行時には実行できません。 したがって、実行時にエラーが発生します。
次の手順は、この問題がどのように発生するかを示しています。
ER データ モデル、ER モデル マッピング、ER モデル マッピング コンポーネントの構成を同時に開始します。
データ モデル ツリーで、Root3 という名前のルート項目を追加します。
レコード リスト タイプの新しい入れ子になった項目を追加して、Root3 項目を変更します。
新しい入れ子になった項目 Vendor に名前を付けます。
次の方法で Vendor 項目を変更します:
- 文字列 タイプの入れ子になったフィールドを追加し、Name と名前を付けます。
- 文字列 タイプの入れ子になったフィールドを追加し、AccountNumber と名前を付けます。
モデル マッピング デザイナーの、データ ソース ペインで、Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
全般 \ ユーザー入力パラメーター タイプのデータ ソースを追加し、ランタイム ダイアログ ボックスで仕入先アカウントについて照会します。
新しいデータ ソースに RequestedAccountNum と名前を付けます。 ラベル フィールドに、仕入先番号 を入力します。 操作のデータ型名 フィールドは、既定値の 説明 のままにします。
計算済フィールド タイプのデータ ソースを追加して、照会する仕入先をフィルター処理します。
新しいデータ ソースに FilteredVendor と名前を付けて、式
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
を含むように構成します。次の方法で、構成されたデータ ソースにデータ モデル項目をバインドします:
- FilteredVendor を Vendor にバインドします。
- FilteredVendor.AccountNum を Vendor.AccountNumber にバインドします。
メモ
Vendor.Name データ モデル フィールドはバインド解除されたままです。
形式構造ツリーで、次の項目を追加して、照会される仕入先の詳細を含む送信ドキュメントを XML 形式で生成します:
Statement ルート XML 要素を追加します。
Statement XML 要素の場合は、入れ子になった Party XML 要素を追加します。
Party XML 要素の場合は、次の入れ子になった XML 属性を追加します:
- 氏名
- AccountNum
次の方法で、形式要素を指定されたデータ ソースにバインドします:
- Statement\Party 形式要素を
model.Vendor
データ ソース項目にバインドします。 - Statement\Party\Name 形式要素を model.Vendor.Name データ ソース フィールドにバインドします。
- Statement\Party\AccountNum 形式要素を model.Vendor.AccountNumber データ ソース フィールドにバインドします。
- Statement\Party 形式要素を
検証 を選択して、形式デザイナー ページで編集可能な形式コンポーネントを検査します。
検証警告が発生することに注意してください。 メッセージは、model.Vendor.Name データ ソース フィールドが、形式で使用するように構成されているモデル マッピングのデータ ソースにバインドされていないことを示しています。 したがって、Statement\Party\Name 形式要素が実行時に入力されず、ランタイム例外が発生する可能性があります。
次の図は、警告を無視し 実行 を選択して、形式を実行した場合に、発生するランタイム エラーを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
model.Vendor.Name データ ソース フィールドにバインドを追加して、構成済みモデル マッピングを変更します。
オプション 2
Statement\Party\Name 形式要素のバインドを削除することで、構成済みの形式を変更します。
リンクされていないテンプレート
テンプレートを使用して送信ドキュメントを生成するように ER 形式コンポーネントを 手動で 構成する場合は、Excel\File 要素を手動で追加し、必要なテンプレートを編集可能なコンポーネントの添付ファイルとして追加して、追加された Excel\File 要素で、その添付ファイルを選択する必要があります。 このようにして、実行時に追加された要素で選択したテンプレートを埋めるように指定します。 ドラフト 状態で形式コンポーネントのバージョンを構成する場合は、編集可能なコンポーネントにテンプレートをいくつか追加し、Excel\File 要素で各テンプレートを選択して、ER 形式を実行することができます。 このようにして、実行時にさまざまなテンプレートがどのように入力されるかを確認できます。 Excel\File 要素で選択されていないテンプレートがある場合、ER 形式デザイナーは、編集可能な ER 形式コンポーネント バージョンの状態が ドラフト から 完了 に変更されるたときに、これらのテンプレートがそのバージョンから削除されることを警告します。
次の手順は、この問題がどのように発生するかを示しています。
ER 形式コンポーネントの構成を開始します。
形式構造ツリーで、Excel\File 要素を追加します。
追加した Excel\File 要素の場合、Excel ブック ファイル A.xlsx を添付ファイルとして追加します。 ER パラメーター で構成されているドキュメント タイプを使用して、ER 形式テンプレートのストレージを指定します。
Excel\File 要素の場合、別の Excel ブック ファイル B.xlsx を添付ファイルとして追加します。 ブック ファイル A に使用されているのと同じドキュメント タイプを使用します。
Excel\File 要素で 、ブック ファイル A を選択します。
検証 を選択して、形式デザイナー ページで編集可能な形式コンポーネントを検査します。
検証警告が発生することに注意してください。 メッセージは、ブック ファイル B.xlsx がどのコンポーネントにもリンクされておらず、構成バージョンの状態が変更された後に削除されることを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
Excel\File 要素にリンクされていないテンプレートをすべて削除して、構成済みの形式を変更します。
未同期形式
Excel テンプレートを使用して送信ドキュメントを生成するように、ER 形式コンポーネントを 構成 する場合は、Excel\File 要素を手動で追加し、必要なテンプレートを編集可能なコンポーネントの添付ファイルとして追加して、追加された Excel\File 要素で、その添付ファイルを選択できます。 このようにして、実行時に追加された要素で選択したテンプレートを埋めるように指定します。 追加した Excel テンプレートは外部で設計されているので、編集可能な ER 形式には、追加したテンプレートにない Excel 名が含まれる可能性があります。 ER 形式デザイナーは、追加した Excel テンプレートに含まれていない名前を参照する ER 形式要素のプロパティ間の不整合について警告します。
次の手順は、この問題がどのように発生するかを示しています。
ER 形式コンポーネントの構成を開始します。
形式構造ツリーで、Excel\File 要素 Report を追加します。
追加した Excel\File 要素の場合、Excel ブック ファイル A.xlsx を添付ファイルとして追加します。 ER パラメーター で構成されているドキュメント タイプを使用して、ER 形式テンプレートのストレージを指定します。
重要
追加した Excel ブックに名前 ReportTitle が含まれていないことを確認してください。
Excel\Cell 要素 Title を Report 要素の入れ子になった要素として追加します。 Excel の範囲 フィールドに、ReportTitle を入力します。
検証 を選択して、形式デザイナー ページで編集可能な形式コンポーネントを検査します。
検証警告が発生することに注意してください。 メッセージは、名前 ReportTitle が、使用している Excel テンプレートのシート Sheet1 に存在しないことを示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
テンプレートから欠落している Excel 名を参照する要素をすべて削除して、構成済の形式を変更します。
オプション 2
Excel テンプレートをインポートすることで、編集可能な ER 形式を更新します。 編集可能な ER 形式の構造は、インポートした ER テンプレートの構造と 同期 されます。
その他の考慮事項
ビジネス ドキュメント管理 のテンプレート エディターで ER テンプレートと形式構造を同期する方法については、ビジネス ドキュメント テンプレートの構造の更新 を参照してください。
未同期テンプレート形式
Word テンプレートを使用して送信ドキュメントを生成するように、ER 形式コンポーネントを構成 する場合は、Excel\File 要素を手動で追加し、必要な Word テンプレートを編集可能なコンポーネントの添付ファイルとして追加して、追加された Excel\File 要素で、その添付ファイルを選択できます。
メモ
Word ドキュメントが関連付けられている場合、ER 形式デザイナーは編集可能な要素を Word\File として表示します。
このようにして、実行時に追加された要素で選択したテンプレートを埋めるように指定します。 追加した Word テンプレートは外部で設計されているので、編集可能な ER 形式には、追加したテンプレートにない Word コンテンツ コントロールが含まれる可能性があります。 ER 形式デザイナーは、追加した Word テンプレートに含まれていないコンテンツ コントロールを参照する ER 形式要素のプロパティ間の不整合について警告します。
この問題がどのように発生するかを示す例については、編集可能な形式を構成して概要セクションを非表示にする を参照してください。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
検証警告で表示されている形式要素から削除済みの式を削除することにより構成済み形式を変更します。
オプション 2
必要なタグを、関連する Word コンテンツ コントロールに追加 することにより Word テンプレートの使用を変更します。
既定のマッピングなし
バインドの欠落 の検査が行なわれた場合、検査された形式バインドは、関連するモデル マッピング コンポーネントのバインドに対して評価されます。 複数の ER モデル マッピング構成を Finance インスタンスにインポートすることができ、それぞれの構成に適用可能なモデル マッピング コンポーネントが含まれている可能性があるため、1 つの構成を既定の構成として選択する必要があります。 そうしない場合、検査された ER 形式を実行、編集、または検証しようとした場合、例外が発生し、次のメッセージが表示されます。"複数のモデル マッピングが、<モデル名 (ルート記述子) >データ モデルに対して、構成<コンマで区切られた構成名>に存在します。 構成の 1 つを既定として設定してください。"
この問題がどのように発生したか示す例、および修正方法については、単一のモデル ルートへの複数の派生マッピングの管理 を参照してください。
ヘッダーまたはフッターのコンポーネントの設定不整合
Excel テンプレートを使用して送信ドキュメントを生成するために ER 形式コンポーネントを構成する 場合、Excel ブックのワークシートの上部にヘッダーを入力するために Excel\ヘッダーのコンポーネントを追加できます。 ワークシートの下部にフッターに入力するために Excel\フッターのコンポーネントを追加することもできます。 追加するすべての Excel\ヘッダーまたは Excel\フッターのコンポーネントに対して、コンポーネントが実行されるページを指定するためヘッダー/フッターの外観プロパティを設定する必要があります。 1 つのシート コンポーネントに対して複数の Excel\ヘッダーまたは Excel\フッターのコンポーネントを構成でき、および Excel ワークシートの異なるタイプのページで異なるヘッダーまたはフッターを生成できるので、ヘッダー/フッターの外観プロパティの特定の値に対して、1 つの Excel\ヘッダーまたは Excel\フッターのコンポーネントを構成する必要があります。 複数の Excel\ヘッダーまたは Excel\フッターのコンポーネントが、ヘッダー/フッターの外観プロパティの特定の値に対して構成される場合、検証エラーが発生し、次のエラー メッセージが表示されます。"ヘッダー/フッター (<コンポーネント タイプ:ヘッダーまたはフッター>) が不整合です。"
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
不整合な Excel\ヘッダーまたは Excel\フッター コンポーネントのいずれかを削除して、構成済み形式を変更します。
オプション 2
不整合な Excel\ヘッダーまたは Excel\フッター コンポーネントのいずれかに対してヘッダー/フッター外観 プロパティの値を変更します。
ページ コンポーネントの設定における不整合
Excel テンプレートを使用して送信ドキュメントを生成するように ER フォーマット コンポーネントを構成した場合、生成されたドキュメントに ER の数式を使用してページ付けするための Excel\ページ コンポーネントを追加できます。 Excel\コンポーネントを追加するたびに、入れ子になった範囲コンポーネントを多数追加しても、以下の構造に準拠することができます:
- 最初に入れ子の範囲コンポーネントは、レプリケーション方向プロパティがレプリケーションなしに設定されるように構成することができます。 この範囲は、生成されるドキュメントのページ ヘッダーを作成する目的で使用されます。
- レプリケーション方向のプロパティが縦に設定されている場合、他の多くのネストされた範囲コンポーネントを追加することができます。 これらの範囲は、生成されるドキュメントを入力する目的で使用されます。
- 最期の入れ子の範囲コンポーネントは、レプリケーション方向プロパティがレプリケーションなしに設定されるように構成することができます。 この範囲は、生成されるドキュメントのページ フッターを作成し、必要な改ページを追加する目的で使用されます。
設計時に ER フォーマット デザイナーで ER フォーマットのこの構造に従わない場合は、次のようなエラー メッセージで検証エラーが発生します: 「複数のレプリケーションのない範囲コンポーネントがあります。 不必要なコンポーネントを削除してください。」
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
一貫性のない Excel\範囲 コンポーネントのレプリケーション方向プロパティを変更して、設定されたフォーマットを変更します。
ORDERBY 関数による式の実行可能性
組み込み ORDERBY ER関数は、関数の引数として指定された レコード リスト タイプのER データ ソースのレコードを並べ替える場合に使用します。
ORDERBY
関数の引数を 指定 して、1 回のデータベース呼び出しを行うことでアプリケーション テーブル、ビュー、またはデータ エンティティのレコードを並べ替え、並べ替えられたデータをレコードの一覧として取得できます。 レコード リスト タイプのデータソース は、関数の引数として使用され、呼び出しのアプリケーション ソースを指定します。
ER は、ORDERBY
関数で参照されるデータ ソースに対して直接データベース クエリを確立できるかどうかを確認します。 直接クエリを確立できない場合、ER モデル マッピング デザイナーで検証エラーが発生します。 受信するメッセージは、ORDERBY
関数を含む ER 式を実行時に実行できないことを示しています。
次の手順は、この問題がどのように発生するかを示しています。
ER モデル マッピング コンポーネントの構成を開始します。
Dynamics 365 for Operations \ テーブル レコード タイプのデータ ソースを追加します。
新しいデータ ソースに Vendor と名前を付けます。 テーブル フィールドで、VendTable を選択して、このデータ ソースが VendTable テーブルを要求するように指定します。
計算済フィールド タイプのデータ ソースを追加します。
新しいデータ ソースに OrderedVendors と名前を付けて、式
ORDERBY("Query", Vendor, Vendor.AccountNum)
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、OrderedVendors データ ソースの式を照会できることを確認します。
計算済フィールド タイプの入れ子になったフィールドを追加して、Vendor データ ソースを変更し、トリムされた仕入先番号を取得します。
新しい入れ子になったフィールドに $AccNumber と名前を付けて、式
TRIM(Vendor.AccountNum)
を含むように構成します。検証 を選択して、モデル マッピング デザイナー ページで編集可能なモデル マッピング コンポーネントを検査し、Vendor データ ソースの式を照会できることを確認します。
Vendor データ ソースには、OrderedVendors データソースの式を直接データベース ステートメントに変換できない 計算フィールド タイプの入れ子になったフィールドが含まれているため、検証エラーが発生することに注意してください。 検証エラーを無視し、 実行 を選択してこのモデル マッピングを実行した場合も、実行時に同じエラーが発生します。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
オプション 1
計算フィールド タイプの入れ子になったフィールドを Vendor データ ソースに追加する代わりに、$AccNumber の入れ子になったフィールドを FilteredVendors データ ソースに追加し、式 TRIM(FilteredVendor.AccountNum)
を含むようにフィールドを構成します。 このようにして、ORDERBY("Query", Vendor, Vendor.AccountNum)
式をデータベース レベルで実行し、$AccNumber の入れ子になったフィールドの計算を後で行うことができます。
オプション 2
FilteredVendors データ ソースの式を ORDERBY("Query", Vendor, Vendor.AccountNum)
から ORDERBY("InMemory", Vendor, Vendor.AccountNum)
に変更します。 すべてのレコードがフェッチされ、必要なレコードの順序付けがメモリ内で行われるため、大量のデータがあるテーブル (トランザクション テーブル) の式を変更することはお勧めしません。 したがって、この方法ではパフォーマンスが低下する可能性があります。
廃止されたアプリケーション コンポーネント
ER モデル マッピング コンポーネントまたは ER 形式コンポーネントを設計する場合、データベース テーブル、クラスのメソッドなど、ER のアプリケーション コンポーネントを呼び出す ER 式を構成できます。Finance バージョン 10.0.30 以降では、参照されるアプリケーション コンポーネントがソース コードで廃止としてマークされていることを ER に警告させることができます。 通常、廃止されたコンポーネントは最終的にソース コードから削除されるので、この警告は役に立ちます。 コンポーネントのステータスが通知されることで、ソース コードから削除される前に、編集可能な ER コンポーネントで廃止されたコンポーネントを使用しなくなり、実行時に ER コンポーネントから存在しないアプリケーション コンポーネントを呼び出すエラーを防ぐことができます。
機能管理 ワークスペースで 電子申告データ ソースの廃止された要素を検証する 機能を有効にして、編集可能な ER コンポーネントの検査中にアプリケーション コンポーネントの廃止された属性の評価を開始します。 廃止された属性は、現在、次のタイプのアプリケーション コンポーネントに対して評価されています:
- データベース テーブル
- テーブルのフィールド
- テーブルのメソッド
- アプリケーション クラス
- クラスのメソッド
メモ
警告は、このデータ ソースがこの ER コンポーネントの少なくとも 1 つのバインドで使用されている場合にのみ、廃止されたコンポーネントを参照するデータ ソースの編集可能な ER コンポーネントの検査中に発生します。
ヒント
SysObsoleteAttribute クラスを使用して、コンパイラにエラーの代わりに警告メッセージを発行するように通知する場合、検査警告は、モデル マッピング デザイナー または 形式デザイナー ページの 詳細 FastTab で設計時にソース コードで指定された警告を表示します。
次の図は、CompanyInfo
アプリケーション テーブルの古い DEL_Email
フィールドが、構成済の company
データ ソースを使用してデータ モデル フィールドにバインドされている場合に発生する、検証警告を示しています。
自動解決
この問題を自動的に修正するオプションはありません。
手動解決
廃止されたアプリケーション コンポーネントを参照するデータ ソースへのすべてのバインドを削除して、構成済みのモデル マッピングまたは形式を変更します。
追加リソース
JOIN データ ソースを使用して、ER モデル マッピングで複数のアプリケーション テーブルからデータを取得する
電子申告形式の実行をトレースしてパフォーマンスの問題をトラブルシューティング