生産現場の実行インターフェイスのカスタマイズ
開発者は、現在のフォームを拡張したり、または生産現場実行インターフェイス用のフォームおよびボタンを独自に作成したりすることができます。 これらの新しい要素のコードを追加した後、管理者または生産現場マネージャーは、標準の構成制御を使用して簡単にインターフェイスに追加できます。
たとえば、メイン フォームで新しい列が必要な場合に考えられる解決策を次に示します。
JmgProductionFloorExecutionMainGrid
フォームを拡張し、目的のフィールドを追加します。- 新しいフォームを作成し、それを新しいメイン ビュー (タブ) として追加します。
新しいボタンを追加する (アクション)
新しいボタンを追加する (アクション) には、次の手順に従って、カスタム アクションを実装するクラスを作成します。
<ExtensionPrefix>_JmgProductionFloorExecution<ActionName>Action
という名前の新しいクラスを作成します。次のようになります:<ExtensionPrefix>
は、通常は会社名を使用して、ソリューションを一意に識別します。<ActionName>
はクラスの一意の名前です。 通常は、アクションの種類を示します。
新しいクラスは、
JmgProductionFloorExecutionAction
クラスを拡張する必要があります。必要なすべての方法をオーバーライドします。
たとえば、次のクラスのコードを参照してください。
JmgProductionFloorExecutionBreakAction
: レコードが不要な単純なアクションのクラス。JmgProductionFloorExecutionReportFeedbackAction
: より複雑な機能を提供するクラス。
操作が完了すると、デザインのタブとページに新しいボタン ( が されます Microsoft Dynamics 365 Supply Chain Management。 そこでは、あなた (または管理者または生産現場マネージャー) が、標準のボタンを追加するのと同様に、プライマリーまたはセカンダリー ツール バーに簡単に追加できます。 その方法については、生産現場の実行インターフェースをデザインするを参照してください。
新しいメイン ビューの追加
必要な要素と機能を持つ新しいフォームを作成します。 このフォームは、拡張機能ではなく新しいフォームです。 フォームを
<ExtensionPrefix>_JmgProductionFloorExecution<FormName>
という名前にします。次のようになります:<ExtensionPrefix>
は、通常は会社名を使用して、ソリューションを一意に識別します。<FormName>
は、フォームの一意の名前です。
<ExtensionPrefix>_JmgProductionFloorExecution<FormName>
という名前のメニュー項目を作成します。新しいメニュー項目をリストに追加して
getMainMenuItemsList
メソッドを拡張する<ExtensionPrefix>_JmgProductionFloorExecution<FormName>_Extension
という名前の拡張機能を作成します。 次のコードは、例を示しています。[ExtensionOf(classStr(JmgProductionFloorExecutionMenuItemProvider))] public final class <ExtensionPrefix>_JmgProductionFloorExecutionForm<FormName>_Extension{ static public List getMainMenuItemsList() { List menuItemList = next getMainMenuItemsList(); menuItemList.addEnd(menuItemDisplayStr(<ExtensionPrefix>_JmgProductionFloorExecutionForm<FormName>)); return menuItemList; }
終了すると、新しいメイン ビューが Supply Chain Management のデザイン タブのメイン ビュー コンボ ボックスに自動的に表示されます。 そこでは、あなた (または管理者または生産現場マネージャー) が、標準のメイン ビューを追加するのと同様に、新規または既存タブに簡単に追加できます。 その方法については、生産現場の実行インターフェースをデザインするを参照してください。
詳細ビューの追加
必要な要素と機能を持つ新しいフォームを作成します。 このフォームは、拡張機能ではなく新しいフォームであることに注意してください。 フォームを
<ExtensionPrefix>_JmgProductionFloorExecution<FormName>Detail
という名前にします。次のようになります:<ExtensionPrefix>
は、通常は会社名を使用して、ソリューションを一意に識別します。<FormName>
は、フォームの一意の名前です。
<ExtensionPrefix>_JmgProductionFloorExecution<FormName>Detail
という名前のメニュー項目を作成します。新しいメニュー項目をリストに追加して
getDetailsMenuItemList
メソッドを拡張する<ExtensionPrefix>_JmgProductionFloorExecution<FormName>_Extension
という名前の拡張子を作成します。
終了すると、新しい詳細ビューが Supply Chain Management のデザイン タブの詳細ビュー コンボ ボックスに自動的に表示されます。 そこでは、あなた (または管理者または生産現場マネージャー) が、標準の詳細ビューを追加するのと同様に、新規または既存タブに簡単に追加できます。 その方法については、生産現場の実行インターフェースをデザインするを参照してください。
フォームまたはダイアログへ数値を追加する
次の例は、フォームに数値キーパッドを追加する例を示しています。
各フォームに含まれる数値キーパッド コントローラーの数は、そのフォームの数値キーパッド数と等しくなる必要があります。
private JmgProductionFloorExecutionNumpadController numpadController1; private JmgProductionFloorExecutionNumpadController numpadController2; private JmgProductionFloorExecutionNumpadController numpadController3;
各数値キーパッド コントローラーのビヘイビアーを設定し、各数値キーパッド コントローラーを数値キーパッド フォーム パーツに接続します。
/// <summary> /// Initializes all numpad controllers, defines their behavior and connects them with numpad form parts. /// </summary> public void initializeNumpadController() { numpadController1 = new JmgProductionFloorExecutionNumpadController(); numpadController1.getValueFromNumpadDelegate += eventhandler(this.setQuanityValueFromNumpad_1); QuantityNumpad1.getPartFormRun().setNumpadController(numpadController1); numpadController2 = new JmgProductionFloorExecutionNumpadController(); numpadController2.parmNumpadEnabled(false); numpadController2.parmNumpadValue(333.56); numpadController2.getValueFromNumpadDelegate += eventhandler(this.setQuanityValueFromNumpad_2); QuantityNumpad2.getPartFormRun().setNumpadController(numpadController2); }
数値キーパッドをポップアップ ダイアログとして使用する
次の例では、ポップアップ ダイアログ用に数値キーパッド コントローラーを設定する 1 つの方法を示します。
private void setupNumpadController()
{
numpadController = new JmgProductionFloorExecutionNumpadController();
numpadController.parmShouldNumpadShowOkCancelButtons(true);
numpadController.setNumpadValueToParentFormDelegate += eventhandler(this.setQtyValueFromNumpad);
}
次の例では、数値キーパッド ポップアップ ダイアログを呼び出す 1 つの方法を示します。
Args args = new Args();
args.name(formstr(JmgProductionFloorExecutionNumpad));
args.menuItemName(menuItemDisplayStr(JmgProductionFloorExecutionNumpad));
args.caller(element);
Object formRun = classfactory.formRunClass(args);
formRun.init();
formRun.setNumpadController(numpadController);
numpadController.setValueToNumpad(333.56);
formRun.run();
フォームまたはダイアログへの日時のコントロールの追加
ここでは、フォームまたはダイアログに日時のコントロールを追加する方法を説明します。 作業員は、タッチ対応の日時のコントロールを使用して日時を指定できます。 次のスクリーンショットは、コントロールが通常どのようにページに表示されるかを示しています。 時間コントロールでは、12 時間バージョンと 24 時間バージョンの両方が使用されます。表示されるバージョンは、インターフェイスの実行に使用するユーザー アカウントの基本設定に従います。
次の手順では、日時のコントロールをフォームに追加する方法の例を説明します。
フォームに含まれる必要がある日時コントロールごとに、フォームにコントローラを追加します。 (コントローラー数は、フォーム内の日時コントロールの数と同じである必要があります。)
private JmgProductionFloorExecutionDateTimeController dateFromController; private JmgProductionFloorExecutionDateTimeController dateToController; private JmgProductionFloorExecutionDateTimeController timeFromController; private JmgProductionFloorExecutionDateTimeController timeToController;
必要な変数 (タイプ
utcdatetime
) を宣言します。private utcdatetime fromDateTime; private utcdatetime toDateTime;
日時コントローラーで datetime を更新するメソッドを作成します。 次の例では、その作成したメソッドを 1 つ表示しています。
private void setFromDateTime(utcdatetime _value) { fromDateTime = _value; }
各 datetime コントローラーの動作を設定し、各コントローラーをフォーム パーツに接続します。 次の例では、開始日および開始時刻のコントロールに対してデータを設定する方法について説明しています。 日時のコントロールに対する同様のコードを追加できます (表示されていません)。
/// <summary> /// Initializes all date and time controllers, defines their behavior, and connects them with the form parts. /// </summary> private void initializeDateControlControllers() { dateFromController = new JmgProductionFloorExecutionDateTimeController(); dateFromController.setDateControlValueToCallerFormDelegate += eventhandler(this.setFromDateTime); dateFromController.parmDateTimeValue(fromDateTime); timeFromController = new JmgProductionFloorExecutionDateTimeController(); timeFromController.setDateControlValueToCallerFormDelegate += eventhandler(this.setFromDateTime); timeFromController.parmDateTimeValue(fromDateTime); DateFromFormPart.getPartFormRun().setDateControlController(dateFromController, timeFromController); TimeFromFormPart.getPartFormRun().setTimeControlController(timeFromController, dateFromController); ... }
日付コントロールが必要な場合は、時間コントロールの設定を省略し、次の例で示すように日付コントロールを設定する必要があります。
{ dateFromController = new JmgProductionFloorExecutionDateTimeController(); dateFromController.setDateControlValueToCallerFormDelegate += eventhandler(this.setFromDateTime); dateFromController.parmDateTimeValue(fromDateTime); DateFromFormPart.getPartFormRun().setDateControlController(dateFromController, null); }