レポートアクションを使用してサブフォームのデータを別のサブフォームにコピーする方法

レポートアクションを使用してサブフォームのデータを別のサブフォームにコピーする方法

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

データのサブフォーム内の値は、レポート処理内のDelugeを使用して別のフォームのサブフォームにコピーできます。これにより、サブフォームデータのスムーズな転送と一貫性の保証が可能になります。

例えば、Zoho Creatorのリソース管理アプリケーションでは、チームがサブフォーム内の商品リストとともに商品リクエストを送信します。マネージャは、フォームのレポートからこれらのリクエストを認証します。認証後、リクエストはサブフォームから発注書フォームのサブフォームに要求された素材を複製することで直接発注書に変換されます。これは、レポート操作が標準データ上でクリックされると実行されます。

事前準備

アプリケーション内で一つのサブフォームから別のサブフォームにデータを転送するためには、両方のサブフォームが同じタイプの項目を2つの異なるフォーム間で持つ必要があります。ここではデモンストレーションの目的で、フォーム Form A内のサブフォーム項目Subform AとフォームForm B内のサブフォーム項目Subform Bを作成し、Subform A内の同じ項目を複製して、サブフォームデータをForm AからForm Bに転送します。
加えて、番号項目ID_NumberForm Bに追加され、Form Aのレポートで操作商品が実行されたデータのIDを格納します。サブフォームデータは、データのIDをID_Number項目に保存してForm Aから取得し、それをForm BSubform Bに反映します。
Form A:


Form B:

手順

  1. アプリケーションの編集モードForm Aのレポートに移動します。操作項目を設定し、'Copy Subform'という名前でワークフローを作成し、以下のDelugeスクリプトをワークフローに追加します。この操作項目が実行されると、Form Bが開かれ、選択されたデータのIDがForm BのID 番号項目に反映されます。
    1. //openURLタスクを設定し、'Form B'を開き、選択したデータのIDを'Form B'のID番号項目に反映します。
    2. openUrl('#Form:Form_B?ID_Number='+input。ID, 'same window');
  2. 操作項目を追加し、Form Aのレポートのクイック表示レイアウトに追加すればForm Aのレポートのクイック表示からボタンでアクセスできます。

  3. 新規ワークフローの作成Form Bのロード時に実行し、データイベントとして作成を設定します。このワークフローでは、差出人Aからサブフォームのデータを取得し、それを表示します。

  4. 新たな操作の追加 > Deluge Scriptをクリックし、以下のスクリプトをDelugeエディタに追加します。
    1. if(ID_Number != null)
    2. {
    3. //自動置換されるIDに一致する'Form A'の選択されたデータのサブフォームデータをID 番号 項目で取得します。
    4. fetch_records = Form_A[ID == input。ID_Number]。Subform_A;
    5. //サブフォームの行を格納するコレクションを作成します。
    6. rows_collection = コレクション();
    7. //'Form A'の各サブフォーム行を順次参照し、'Form A'のSubform Aから値を取得して割り当て、それを'Form B'のSubform Bに適用します。
    8. for each data in fetch_records
    9. {
    10. subform_row = Form_B。Subform_B();
    11. subform_row。Single_Line_B = data。Single_Line_A;
    12. subform_row。Number_B = data。Number_A;
    13. rows_collection。insert(subform_row);
    14. }
    15. //コレクションに格納されたサブフォームの行を'Subform B'に挿入します。
    16. input。Subform_B。insert(rows_collection);
    17. }
できることも、隠すID 番号項目をForm Bで選択するということで、それは内部でIDの格納に使用されており、関連するデータをForm Aで取得します。

動作方法を見てみましょう


  1. サブフォームに行を挿入する
  2. カスタム操作を作成
  3. openUrl