Important
Dynamics 365 Project Service Automation は Dynamics 365 Project Operations に進化しました。 詳細は、Project Service Automation の移行を参照してください。
型フィールド
Dynamics 365 Project Service Automation は、営業案件、見積もり、注文、請求書エンティティの 種類 (msdyn_ordertype) フィールドに依存して、これらのエンティティの 作業ベース のバージョンと 、アイテムベース のバージョンと サービスベースの バージョンを区別します。 これらのエンティティの作業ベースのバージョンは、PSA によって処理されます。 ソリューションのクライアント側とサーバー側の多くのビジネス ロジックは 、[種類 ] フィールドによって異なります。 そのため、エンティティの作成時にフィールドを正しい値で初期化することが重要です。 値が正しくないと、不適切な動作が発生する可能性があり、一部のビジネス ロジックが正しく実行されない可能性があります。
フォームの自動切り替え
販売エンティティ レコードの不適切な初期化と編集によって引き起こされる潜在的なデータ破損や予期しない動作を回避するために、PS には、既定のフォームでの自動フォーム切り替えのロジックが含まれるようになりました。 このロジックにより、ユーザーは、作業ベースのバージョンまたはその他の種類の営業案件、見積もり、注文、または請求書エンティティを操作するための正しいフォームに移動します。 ユーザーが営業案件、見積もり、注文、または請求書エンティティの作業ベースのバージョンを開くと、フォームは プロジェクト情報に切り替えられます。
自動フォーム切り替えロジックは、 formId 値と msdyn_ordertype フィールド間のマッピングに依存します。 すべてのすぐに使用できるフォームがそのマッピングに追加されました。 ただし、ユーザー設定フォームを手動で追加して、処理するエンティティのバージョンを示す必要があります。 これは、 msdyn_ordertype フィールドに基づいています。 フォームの切り替えがマッピングに含まれていない場合、ロジックはエンティティの msdyn_ordertype フィールドに保存されている値に基づいて、すぐに使用できるフォームに切り替わります。
カスタム フォームを追加し、フォーム切り替えロジックを有効にする
次の例は、作業ベースの営業案件で動作するように、カスタム フォームの マイ プロジェクト情報を追加する方法を示しています。 見積もり、注文、請求書を操作できるように、同じプロセスを使用してカスタム フォームを追加します。
プロジェクト 情報 フォームのカスタム バージョンを作成するには、次の手順に従います。
営業案件エンティティで、[ プロジェクト情報 ] フォームを開き、[ マイ プロジェクト情報] という名前でコピーを保存します。
新しいフォームを開き、プロパティで、 プロジェクト情報 フォームのフォーム初期化スクリプトが存在することを確認します。
Important
スクリプトを削除しないでください。 そうしないと、一部のデータが正しく初期化されない可能性があります。
[種類] (msdyn_ordertype) フィールドがフォームに存在することを確認します。
Important
このフィールドは削除しないでください。 それ以外の場合、初期化スクリプトは失敗します。
新しい フォームの formId 値を検索します。 この手順は、次の 2 つの方法で完了できます。
- アンマネージド ソリューションの一部として [マイ プロジェクト情報 ] フォームをエクスポートし、エクスポートしたソリューションの customization.xml ファイルで formId 値を検索します。
- フォーム エディターで [ マイ プロジェクト情報 ] フォームを開き、次の図に示すように、URL の fromId パラメーターの横にあるグローバル一意識別子 (GUID) を探します。
msdyn_/SalesDocument/PSSalesDocumentCustomFormIds.js Web リソースを編集して、formId 値のmsdyn_ordertype マッピングを作成します。 リソースからコードを削除し、次のコードに置き換えます。
define(["require", "exports"], function (require, exports) { "use strict"; var SalesDocumentCustomFormIds = (function () { function SalesDocumentCustomFormIds() { } SalesDocumentCustomFormIds.overwriteFormIds = function (mappedFormIds) { /* ---- Notes ---- mappedFormIds[SalesEntity][OrderType] => The array of forms IDs that support particular entity and order type Add or overwrite customized formId for the particular entity and order type by calling: mappedFormIds[<EntityType>][<msdyn_ordertype>].push("<formId>"); Allowed msdyn_ordertype values for reference: ServiceBased: 690970002 (Field Service version of the entity) WorkBased: 192350001 (PSA version of the entity) ItemBased: 192350000 (Regular out of the box entity) Uncomment and update one of the following lines to register custom PSA form for required entity: */ //mappedFormIds[1][192350001].push("<formId>"); //Quote //mappedFormIds[5][192350001].push("<formId>"); //Quote Line //mappedFormIds[2][192350001].push("<formId>"); //Sales Order //mappedFormIds[6][192350001].push("<formId>"); //Sales Order Line // In this example we have added new form for Opportunity mappedFormIds[0][192350001].push("192EE537-DCC4-45D3-B7AF-EA694B9113D2"); //Opportunity //mappedFormIds[4][192350001].push("<formId>"); //Opportunity Line }; return SalesDocumentCustomFormIds; }()); exports.default = SalesDocumentCustomFormIds; });カスタマイズを保存して発行します。