選択したリストフォームを開くにはどうすればよいですか? ディレクトリリストフォームで選択を設定するにはどうすればよいですか? 選択したフォームを開く 8.2

14.12.2023

するために 1秒で選択フォームを開く 8.2(通常の形式)、いくつかのアクションを実行する必要があります。 まずはそれを手に入れましょう。 その後、選択を設定してプログラムで開きます。コード例は次のとおりです。

複数の値を含む 1C 8.2 入力フィールドのフォーム上の選択

上の例では、 選択フォームで選択を設定する方法特定の値によって。 次に、複数の値を置換する必要がある状況を見てみましょう。これは、たとえば、配列やクエリ結果からアンロードされたものなどです。 これは 1c 入力フィールドでの選択です複数の意味を持って。

まず、選択フォームを取得し、パラメーターに「要素」(所有者) を渡し、選択モード フラグを設定します。 次に、値のリストと配列を作成します。リストで比較のタイプを設定するときの選択として、オブジェクトはそのタイプでのみ存在できることに注意してください。 リスト値。 要素を配列に追加し、この配列を値のリストにロードし、その後選択範囲に設定します。 また、この選択を使用するためのフラグを有効にし、比較タイプを設定することを忘れないでください。

1C 8.3、選択開始イベントのフォーム上の入力フィールドでの選択の設定

では、考えてみましょう 1C 8.3 の管理フォームの入力フィールドでの選択。 フォーム上で、選択を設定する対象の要素を見つけてみましょう。この場合、これは「組織」フィールドです。 「選択の開始」イベントを見つけて、虫眼鏡をクリックすると、手順が開始されます。 [Selection Data] パラメーターが表示されます。このパラメーターは ValueList タイプです。 選択を必要な要素に制限するには、値のリストに入力する必要があります。 要素はサーバー上でのみ選択できるため、&OnServer コンパイル ディレクティブを使用してプロシージャを作成します。 この手順では、選択データを入力します。

このコードを使用すると、指定した選択を含むドキュメントのリストを開くことができます。また、必要な選択を含むディレクトリ要素のリストを開くこともできます。

コード 1C v 8.2 UP Form = OpenForm("Document.Invoice.Form.ListForm"); //フォームを開く
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //選択範囲を追加
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //どうやって比較するのか
SelectOwner.Use = True; // NewDataCompositionField("Nomenclature") を使用するためのチェックボックスを設定します
SelectionOwner.LeftValue = NewDataCompositionField("アカウント"); //選択にはどのような詳細を使用しますか?
SelectionOwner.RightValue = Object.Account; // そして選択の意味そのもの

するために 事前定義された選択を含むリストフォームを開く次の方法を使用します。

最初の方法フォームを開くときに、選択フォーム パラメーターを設定し、このパラメーターを使用してリスト フォームを開くことができるということです。

選択パラメータは構造を表します。 要素の名前は選択が行われるフィールドの名前に対応し、値には選択値が含まれます。 これは、動的リスト管理フォーム拡張オプションです。 つまり、リスト フォームや選択フォームなど、主属性が DynamicList タイプの属性であるフォームに対して存在します。

たとえば、次の例では、請求書のリストが開き、番号フィールド (333) が選択されています。

コード 1C v 8.2 UE 選択値 = New Structure("Number", "333");
SelectionParameters = 新しい構造("選択", SelectionValue);
OpenForm("文書.領収書請求書.リストフォーム", 選択オプション);

第二の方法

パラメーターなしでリスト フォームを開くこともできます。

コード 1C v 8.2 UE OpenForm("Document.Receipt Invoice.List Form");

次に、請求書リストのフォームのイベント ハンドラー When CreatedOnServer に、フォームの主な属性である動的リストに選択を作成するコードを記述します。

コード 1C v 8.2 UP(&OnServer)
CreatedOnServer時の手順(失敗、標準処理)
選択要素 = List.Selection.Elements.Add(Type("DataComposition 選択要素"));
SelectionElement.LeftValue = NewDataCompositionField("数値");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
手順の終了

この方法の利点は、最初のケースのように、選択範囲の比較タイプを「等しい」に設定できるだけでなく、「多い」、「少ない」などにも設定できることです。

ただし、この方法には非常に重大な欠点もあります。この選択では、フォームが常に開いてしまいます。 彼女がどこから呼ばれたとしても。 したがって、このフォームをメインフォームとして指定しないでください。 それにもかかわらず、それがメインである場合は、選択範囲をインストールする前に、このフォームがどこから開くかについて何らかの分析を行う必要があります。 たとえば、フォームパラメータの分析などです。

第三の道

最後に、動的リストのデータを選択するカスタム クエリに選択条件を含めることができます。

たとえば、品目リストで強調表示されている品目を含む請求書のリストを開く必要があります。

これを行うには、項目リストの形式でコマンドと、対応するボタン「領収書」を作成します。

このコマンドの実行ハンドラーを次のように入力しましょう。

コード 1C v 8.2 UP(&OnClient)
手順 領収書請求書(コマンド)
SelectionParameters = 新しい構造("FilterByProduct", Elements.List.CurrentRow);
OpenForm("文書.領収書請求書.リストフォーム", 選択オプション);
手順の終了

このハンドラーでは、請求書のリストのフォームを開き、アイテム リスト内の現在のアイテムへのリンクを FilterByProduct フォーム パラメーターに渡します。

次に、ドキュメントのリストのフォーム (領収書請求書) を作成し、必要な選択を含むフォームを開くために使用する FilterBy Product フォーム パラメーターを作成します。

次に、リスト フォームのメイン属性のプロパティ パレットを開いてみましょう。 カスタム クエリ フラグを設定し、[リスト設定] 行で [開く] をクリックします。

[リクエスト] フィールドに、次のリクエスト テキストを入力します。

コード 1C v 8.2 アップセレクト
文書受領請求書番号。
文書受領書請求書日付
から
Document.ReceiptInvoice AS DocumentReceiptInvoice
どこ
文書受領書 Invoice.Products.Product = &Product

リクエストでは、Item パラメーターを使用します。これは、FilterBy item 請求書リスト フォーム パラメーターに含まれる、アイテム リストの現在の行へのリンクを受け取ります。

これを行うには、リスト フォーム イベント ハンドラー When CreatedOnServer に、Product リクエスト パラメーターの値を設定するコードを記述します。

コード 1C v 8.2 UP(&OnClient)
開封手順(失敗)
List.Parameters.SetParameterValue("製品", Parameters.FilterByProduct);
手順の終了

ここで、List.Parameters は、List 属性の動的リスト要求パラメーターのリストです。 Product パラメーターの値は、FilterByProduct フォーム パラメーターの値と等しく設定されます。

その結果、品目リスト フォームの [請求書を受け取る] ボタンをクリックすると、品目リストで現在選択されている品目を含む請求書のみのリストを受け取ることになります。

事前に設定された選択を含むリスト フォームを開くには、いくつかの方法があります。 それらを見てみましょう:

  1. 最初の方法フォームを開くときにフォームパラメータを設定できることです 選択をクリックし、このパラメータを使用してリスト フォームを開きます。 パラメータ 選択構造を表します。 要素の名前は選択が行われるフィールドの名前に対応し、値には値が含まれます。
    選択。 これは、動的リスト管理フォーム拡張オプションです。 つまり、主属性が type 属性であるフォームに対して存在します。 ダイナミックリストリストフォームや選択フォームなど。

フォームを開くと、指定されたフィールドに基づいて選択が行われます。 たとえば、次の例では、請求書のリストが開き、「OJSC Horns and Hooves」に等しい取引先フィールドが選択されています。

選択値 = 新しい構造 (「取引相手」) , 「JSC 角と蹄」);
選択オプション= 新しい構造("選択", SelectionValue);
OpenForm (「文書。領収書請求書。リストフォーム」、 選択オプション);

2. パラメーターなしでリスト フォームを開くことができます。

OpenForm (「文書。領収書請求書。リストフォーム」);

そして、請求書リストフォームのイベントハンドラーで サーバー上で作成されたとき フォームの主な属性である動的リストに選択を作成するコードを作成します。

サーバー上(&O)
手順 サーバー上で作成されたとき(拒否、 標準加工)
選択要素 = リスト 。 選択。 要素。 追加 (タイプ
(「DataCompositionSelectionElement」));
選択要素 .LeftValue = New データレイアウトフィールド(「ドキュメント金額」);
選択要素。 比較ビュー = 比較ビューデータ レイアウト。 もっと ;
選択要素。 使用法 = true;
選択要素。 RightValue = 150000;
手順の終了

この方法の利点は次のとおりです。 見る比較選択範囲を設定できるだけでなく、 等しい、最初のケースと同様、 もっと, 少ない

ただし、この方法には非常に重大な欠点もあります。この選択をすると、フォームが常に開いてしまいます。 彼女がどこから呼ばれたとしても。 したがって、このフォームをメインフォームとして指定しないでください。 それにもかかわらず、それがメインである場合は、選択範囲をインストールする前に、このフォームがどこから開くかについて何らかの分析を行う必要があります。 たとえば、フォームパラメータの分析などです。

3. 最後に、選択条件をカスタムリクエストに含めることができます。、動的リストのデータを選択します。 たとえば、品目リストで強調表示されている品目を含む請求書のリストを開く必要があります。

これを行うには、項目のリストの形式でコマンドと対応するボタンを作成します。 消耗品請求書

このコマンドの実行ハンドラーを次のように入力しましょう。

&OnClient
手順 消耗品請求書(チーム )
ListForm = GetForm("Document.Invoice.ListForm");
リストフォーム。 FilterByProduct = 項目 。 リスト 。 現在の行 ;
リストフォーム。 開ける();
手順の終了

このハンドラーでは、請求書のリストのフォームを受け取り、それをフォームパラメーターに渡します。 製品別フィルター項目リスト内の現在の項目にリンクし、このパラメータを使用してフォームを開きます。
次に、ドキュメントリストフォームを作成します 消耗品の請求書そしてフォーム属性を作成します 製品別フィルター、開くときにフォームパラメータとして使用します。 次に、メインフォーム属性のプロパティパレットを開いてみましょう リスト。 フラグを立てましょう カスタムリクエストそしてで
ライン リストの設定押してみましょう 開ける.

フィールドで リクエスト次のリクエストテキストを入力してみましょう。

選ぶ

文書受領請求書番号。
文書受領書請求書日付
から
Document.ReceiptInvoice AS DocumentReceiptInvoice
どこ
文書受領書 Invoice.Products.Product = &Product

リクエストではパラメータを使用します 製品、請求書のリスト フォームの属性に含まれるアイテムのリストの現在の行へのリンクが送信されます。 製品別フィルター。 これを行うには、リスト形式のイベント ハンドラーで 開くとき Product リクエスト パラメーターの値を設定するコードを書いてみましょう。

&OnClient
開封手順(失敗)
リスト 。 パラメータ。 SetParameterValue("製品"、FilterByProduct);
手順の終了

ここ リスト.オプション— これは、List 属性の動的リスト要求パラメータのリストです。 パラメータ値 製品フォームパラメータの値と等しく設定されます 製品別フィルター。 その結果、ボタンをクリックするだけで、 請求書品目リストの形式で、品目リストで現在選択されている品目を含む請求書のみのリストを受け取ります。

— これは、List 属性の動的リスト要求パラメータのリストです。

コード 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="承認済み";
DirectoryList.Selection.Status.Set();

1C 8.2の場合:
事前に設定された選択を含むリスト フォームを開くには、いくつかの方法があります。 順番に見てみましょう。

1. 1 つ目の方法は、フォームを開くときに選択フォーム パラメーターを設定し、このパラメーターを使用してリスト フォームを開く方法です。 選択パラメータは構造を表します。 要素の名前は選択が行われるフィールドの名前に対応し、値には選択値が含まれます。 これは、動的リスト管理フォーム拡張オプションです。 つまり、リスト フォームや選択フォームなど、主属性が動的リスト タイプ属性であるフォームに対して存在します。

フォームを開くと、指定されたフィールドに基づいて選択が行われます。
Code 1C v 8.2 UP // たとえば、次の例では、333 に等しい番号フィールドを選択して請求書のリストが開きます。
選択値 = 新しい構造("数値", "333");
SelectionParameters = 新しい構造("選択", SelectionValue);

OpenForm("文書.領収書請求書.リストフォーム", 選択オプション);

// たとえば、次の例では請求書のリストを開きます
// 「OJSC Horns and Hooves」と等しい請負業者フィールドによる選択。
選択値 = 新しい構造("カウンターパーティ", "OJSC の角とひづめ");
SelectionParameters = 新しい構造("選択", SelectionValue);
OpenForm("文書.領収書請求書.リストフォーム", 選択オプション);

2. パラメーターなしでリスト フォームを開くことができます。
コード 1C v 8.2 UP OpenForm("Document.領収書請求書.List Form");

次に、請求書リストのフォームのイベント ハンドラー When CreatedOnServer に、フォームの主な属性である動的リストに選択を作成するコードを記述します。
コード 1C v 8.2 UP(&OnServer)

選択要素 = List.Selection.Elements.Add(Type("DataComposition 選択要素"));
SelectionElement.LeftValue = NewDataCompositionField("数値");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
手順の終了

サーバー上(&O)
CreatedOnServer時の手順(失敗、標準処理)
選択要素 = List.Selection.Elements.Add(Type
(「DataCompositionSelectionElement」));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
選択要素.RightValue = 150000;
手順の終了

この方法の利点は、比較ビューです。選択には、最初のケースのように「等しい」だけでなく、「多い」、「少ない」などを設定することもできます。

ただし、この方法には非常に重大な欠点もあります。この選択をすると、フォームが常に開いてしまいます。 彼女がどこから呼ばれたとしても。 したがって、このフォームをメインフォームとして指定しないでください。 それにもかかわらず、それがメインである場合は、選択範囲をインストールする前に、このフォームがどこから開くかについて何らかの分析を行う必要があります。 たとえば、フォームパラメータの分析などです。

3. 最後に、動的リストのデータを選択するカスタム クエリに選択条件を配置できます。 たとえば、品目リストで強調表示されている品目を含む請求書のリストを開く必要があります。

これを行うには、項目リストの形式でコマンドと、対応するボタン「領収書」を作成します。

このコマンドの実行ハンドラーを次のように入力しましょう。
コード 1C v 8.2 UP(&OnClient)
手順 領収書請求書(コマンド)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Items.List.CurrentRow;
ListForm.Open();

手順の終了

このハンドラーでは、請求書のリストのフォームを受け取り、項目リスト内の現在の項目へのリンクを FilterByProduct フォーム パラメーターに渡し、このパラメーターでフォームを開きます。

次に、ドキュメントのリストのフォーム (領収書請求書) を作成し、フォーム属性 FilterBy Product を作成します。これは、フォームを開くときにフォームのパラメーターとして使用します。 次に、リスト フォームのメイン属性のプロパティ パレットを開いてみましょう。 ArbitraryRequest フラグを設定するそして、リスト設定行で をクリックします。 開ける.

[リクエスト] フィールドに、次のリクエスト テキストを入力します。
コード 1C v 8.2 アップセレクト
文書受領請求書番号。
文書受領書請求書日付
から
Document.ReceiptInvoice AS DocumentReceiptInvoice
どこ
文書受領書 Invoice.Products.Product = &Product

リクエストでは、Item パラメーターを使用します。これは、FilterBy アイテム請求書リスト フォーム パラメーターに含まれる、アイテム リストの現在の行へのリンクを受け取ります。 これを行うには、OnOpen リスト フォーム イベント ハンドラーで、Product リクエスト パラメーターの値を設定するコードを記述します。
コード 1C v 8.2 以降
&OnClient
開封手順(失敗)

List.Parameters.SetParameterValue("製品", FilterByProduct);

手順の終了

ここ リスト.オプション List 属性の動的リスト要求パラメータのリストです。 Product パラメーターの値は、FilterByProduct フォーム パラメーターの値と等しく設定されます。

その結果、品目リスト フォームの [請求書を受け取る] ボタンをクリックすると、品目リストで現在選択されている品目を含む請求書のみのリストを受け取ることになります。

サイトから取得した情報

選択したリストフォームを開くにはどうすればよいですか?

事前に設定された選択を含むリスト フォームを開くには、いくつかの方法があります。 順番に見てみましょう。

1. 1 つ目の方法は、フォームを開くときに選択フォーム パラメーターを設定し、このパラメーターを使用してリスト フォームを開く方法です。 選択パラメータは構造を表します。 要素の名前は選択が行われるフィールドの名前に対応し、値には選択値が含まれます。 これは、動的リスト管理フォーム拡張オプションです。 つまり、主属性が type 属性であるフォームに対して存在します。 動的リストリストフォームや選択フォームなど。

フォームを開くと、指定されたフィールドに基づいて選択が行われます。 たとえば、次の例では、請求書のリストが開き、番号フィールド (333) が選択されています。

選択値 = 新しい構造("数値", "333");

SelectionParameters = 新しい構造("選択", SelectionValue);

OpenForm("文書.領収書請求書.リストフォーム", 選択オプション);

2. パラメーターなしでリスト フォームを開くことができます。

OpenForm("Document.Invoice.ListForm");

そして、請求書リストフォームのイベントハンドラーで サーバー上で作成されたときフォームの主な属性である動的リストに選択を作成するコードを作成します。

サーバー上(&O)

CreatedOnServer時の手順(失敗、標準処理)

選択要素 = List.Selection.Elements.Add(Type("DataComposition 選択要素"));

SelectionElement.LeftValue = NewDataCompositionField("数値");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

手順の終了

この方法の利点は、最初のケースのように、選択項目の比較タイプを「等しい」だけでなく、「多い」、「少ない」などにも設定できることです。

ただし、この方法には非常に重大な欠点もあります。この選択では、フォームが常に開いてしまいます。 彼女がどこから呼ばれたとしても。 したがって、このフォームをメインフォームとして指定しないでください。 それにもかかわらず、それがメインである場合は、選択範囲をインストールする前に、このフォームがどこから開くかについて何らかの分析を行う必要があります。 たとえば、フォームパラメータの分析などです。

3. 最後に、動的リストのデータを選択するカスタム クエリに選択条件を配置できます。 たとえば、品目リストで強調表示されている品目を含む請求書のリストを開く必要があります。

これを行うには、項目のリストの形式でコマンドと対応するボタンを作成します。 領収書の請求書.

このコマンドの実行ハンドラーを次のように入力しましょう。

&OnClient

手順 領収書請求書(コマンド)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Items.List.CurrentRow;

ListForm.Open();

手順の終了

このハンドラーでは、請求書のリストのフォームを受け取り、項目リスト内の現在の項目へのリンクを FilterByProduct フォーム パラメーターに渡し、このパラメーターでフォームを開きます。

次に、ドキュメントリストフォームを作成します 請求書そして、FilterByProduct フォーム属性を作成します。これを開くときにフォーム パラメーターとして使用します。 次に、リスト フォームのメイン属性のプロパティ パレットを開いてみましょう。 フラグを立てましょう カスタムリクエストそして列の中で リストの設定「開く」をクリックします。

[リクエスト] フィールドに、次のリクエスト テキストを入力します。

選ぶ

文書受領請求書番号。

文書受領書請求書日付

から

Document.ReceiptInvoice AS DocumentReceiptInvoice

どこ

文書受領書 Invoice.Products.Product = &Product

リクエストでは、Item パラメーターを使用します。これは、FilterBy アイテム請求書リスト フォーム パラメーターに含まれる、アイテム リストの現在の行へのリンクを受け取ります。 これを行うには、OnOpen リスト フォーム イベント ハンドラーで、Product リクエスト パラメーターの値を設定するコードを記述します。

&OnClient

開封手順(失敗)

List.Parameters.SetParameterValue("製品", FilterByProduct);

手順の終了

ここ リスト.オプション List 属性の動的リスト要求パラメータのリストです。 Product パラメーターの値は、FilterByProduct フォーム パラメーターの値と等しく設定されます。

その結果、ボタンをクリックするだけで、 領収書の請求書品目リストの形式で、品目リストで現在選択されている品目を含む請求書のみのリストを受け取ります。

3 番目のオプションのデモの例は、1CITS/EXE/FAQ/OpenFormWithSelection.dt ディレクトリにあります。 この例は、プラットフォーム バージョン 8.2.9.356 で実行されました。