1c jak otevřít formulář s výběrem. Jak otevřít formulář seznamu s nějakým výběrem? Můžete otevřít formulář seznamu bez parametrů

Jak otevřít formulář seznamu s nějakým výběrem?

Existuje několik způsobů, jak otevřít formulář seznamu s přednastaveným výběrem. Podívejme se na ně v pořadí:

1. První metodou je, že při otevírání formuláře můžete nastavit parametr Výběrový formulář a otevřít formulář seznamu s tímto parametrem. Parametr Výběr představuje strukturu. Názvy prvků odpovídají názvům polí, pomocí kterých se provádí výběr, a hodnoty obsahují hodnoty výběru. Toto je možnost rozšíření spravovaného formuláře dynamický seznam. To znamená, že existuje pro formuláře, jejichž hlavním atributem je atribut type Dynamický seznam, jako jsou formuláře seznamu a formuláře pro výběr.

Při otevření formuláře se provede výběr na základě zadaného pole. Například v následujícím příkladu se otevře seznam faktur s výběrem podle pole Číslo rovné 333.

Hodnota výběru = Nová struktura("Číslo", "333");

SelectionParameters = Nová struktura("Výběr", SelectionValue);

OpenForm("Dokument. Faktura o příjmu. Formulář seznamu", Možnosti výběru);

2. Můžete otevřít formulář seznamu bez parametrů:

OpenForm("Document.Invoice.ListForm");

A pak v obslužné rutině události formuláře seznamu faktur Když CreatedOnServer napište kód, který vytvoří výběr v dynamickém seznamu, což je hlavní atribut formuláře:

&Na serveru

Postup při vytvoření na serveru (selhání, standardní zpracování)

Element výběru = List.Selection.Elements.Add(Type("Prvek výběru DataComposition"));

SelectionElement.LeftValue = NewDataCompositionField("Číslo");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

Konec procedury

Výhody tato metoda Jde o to, že Typ porovnání pro výběr lze nastavit nejen Rovná, jako v prvním případě, ale také Více, Méně atd.

Ale tato metoda má také velmi významnou nevýhodu: s tímto výběrem se formulář vždy otevře. Kamkoli ji zavolali. Proto by tento formulář neměl být označen jako hlavní. A pokud je to přesto hlavní, pak je před instalací výběru nutné provést nějakou analýzu toho, odkud se tento formulář otevírá. Například analýza parametrů formuláře.

3. Nakonec lze podmínku výběru umístit do vlastního dotazu, který vybírá data pro dynamický seznam. Potřebujeme například otevřít seznam faktur, které obsahují položku zvýrazněnou v seznamu položek.

Chcete-li to provést, ve formě seznamu položek vytvořte příkaz a odpovídající tlačítko Příjem faktur.

Vyplňte obslužnou rutinu provádění pro tento příkaz takto:

&OnClient

Postup Potvrzení Faktury (příkaz)

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

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Konec procedury

V tomto handleru obdržíme formulář pro seznam faktur a předáme odkaz na aktuální položku v seznamu položek do parametru formuláře FilterByProduct a otevřeme formulář s tímto parametrem.

Poté vytvoříme formulář seznamu dokumentů Doklad o nákupu a vytvořte atribut formuláře FilterByProduct, který použijeme jako parametr formuláře při jeho otevření. Nyní otevřeme paletu vlastností hlavního atributu formuláře Seznam. Nastavíme vlajku CustomRequest a v řadě Nastavení seznamu klikněte na Otevřít.

Do pole Žádost zadejte následující text žádosti:

VYBRAT

Číslo dokladu o příjmu,

Dokument Příjem Invoice.Date

Z

Document.ReceiptInvoice AS DocumentReceiptInvoice

KDE

Doklad o příjmu Invoice.Products.Product = &Produkt

V požadavku použijeme parametr Položka, který obdrží odkaz na aktuální řádek v seznamu položek, obsažený v parametru formuláře seznamu faktur FilterBy Item. Za tímto účelem napíšeme v obslužné rutině události formuláře seznamu OnOpen kód pro nastavení hodnoty parametru Product request:

&OnClient

Postup otevírání (selhání)

List.Parameters.SetParameterValue("Produkt", FilterByProduct);

Konec procedury

Tady Seznam.Možnosti je seznam parametrů požadavku dynamického seznamu pro atribut List. Hodnota parametru Product je nastavena na stejnou hodnotu jako hodnota parametru formuláře FilterByProduct.

V důsledku toho kliknutím na tlačítko Příjem faktur ve formě seznamu položek obdržíme seznam pouze těch faktur, které obsahují položky zvýrazněné v tento moment v nomenklaturním seznamu.

Ukázkový příklad pro 3. možnost se nachází v adresáři 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Příklad byl proveden na platformě verze 8.2.9.356.

Kód 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Přijato";
DirectoryList.Selection.Status.Set();

Pro 1C 8.2:
Existuje několik způsobů, jak otevřít formulář seznamu s přednastaveným výběrem. Podívejme se na ně v pořadí:

1. První metodou je, že při otevírání formuláře můžete nastavit parametr Výběrový formulář a otevřít formulář seznamu s tímto parametrem. Parametr Výběr představuje strukturu. Názvy prvků odpovídají názvům polí, pomocí kterých se provádí výběr, a hodnoty obsahují hodnoty výběru. Toto je možnost rozšíření formuláře spravovaného dynamickým seznamem. To znamená, že existuje pro formuláře, jejichž hlavním atributem je atribut typu Dynamický seznam, například formuláře seznamu a formuláře pro výběr.

Při otevření formuláře se provede výběr na základě zadaného pole.
Kód 1C v 8.2 UP // Například v následujícím příkladu se otevře seznam faktur s výběrem v poli Číslo rovným 333.
Hodnota výběru = Nová struktura("Číslo", "333");
SelectionParameters = Nová struktura("Výběr", SelectionValue);

OpenForm("Dokument. Faktura o příjmu. Formulář seznamu", Možnosti výběru);

// Například následující příklad otevře seznam faktur
// s výběrem polem Dodavatel rovným „OJSC Rohy a kopyta“.
Hodnota výběru = Nová struktura("Protistrana", "OJSC Rohy a kopyta");
SelectionParameters = Nová struktura("Výběr", SelectionValue);
OpenForm("Dokument. Faktura o příjmu. Formulář seznamu", Možnosti výběru);

2. Můžete otevřít formulář seznamu bez parametrů:
Kód 1C v 8.2 UE OpenForm("Document. Receipt Invoice.List Form");

A pak v obslužné rutině události formuláře pro seznam faktur When CreatedOnServer napište kód, který vytvoří výběr v dynamickém seznamu, což je hlavní atribut formuláře:
Kód 1C v 8.2 UP &OnServer

Element výběru = List.Selection.Elements.Add(Type("Prvek výběru DataComposition"));
SelectionElement.LeftValue = NewDataCompositionField("Číslo");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Konec procedury

&Na serveru
Postup při vytvoření na serveru (selhání, standardní zpracování)
Element výběru = List.Selection.Elements.Add(Type
(„DataCompositionSelectionElement“));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
Konec procedury

Výhodou této metody je srovnávací pohled pro výběr můžete nastavit nejen Equal, jako v prvním případě, ale také Více, Méně atd.

Ale tato metoda má také velmi významnou nevýhodu: s tímto výběrem se formulář vždy otevře. Kamkoli ji zavolali. Proto by tento formulář neměl být označen jako hlavní. A pokud je to přesto hlavní, pak je před instalací výběru nutné provést nějakou analýzu toho, odkud se tento formulář otevírá. Například analýza parametrů formuláře.

3. Nakonec lze podmínku výběru umístit do vlastního dotazu, který vybírá data pro dynamický seznam. Potřebujeme například otevřít seznam faktur, které obsahují položku zvýrazněnou v seznamu položek.

Chcete-li to provést, ve formě seznamu položek vytvořte příkaz a příslušné tlačítko Příjem faktur.

Vyplňte obslužnou rutinu provádění pro tento příkaz takto:
Kód 1C v 8.2 UP &OnClient
Postup Potvrzení Faktury (příkaz)

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

Konec procedury

V tomto handleru obdržíme formulář pro seznam faktur a předáme odkaz na aktuální položku v seznamu položek do parametru formuláře FilterByProduct a otevřeme formulář s tímto parametrem.

Poté vytvoříme formulář pro seznam dokladů: Příjem faktura a vytvoříme atribut formuláře FilterBy Product, který použijeme jako parametr formuláře při jeho otevření. Nyní otevřeme paletu vlastností hlavního atributu formuláře Seznam. Nastavte příznak ArbitraryRequest a v řádku Nastavení seznamu klikněte na OTEVŘENO.

Do pole Žádost zadejte následující text žádosti:
Kód 1C v 8.2 UP SELECT
Číslo dokladu o příjmu,
Dokument Příjem Invoice.Date
Z
Document.ReceiptInvoice AS DocumentReceiptInvoice
KDE
Doklad o příjmu Invoice.Products.Product = &Produkt

V požadavku použijeme parametr Položka, který obdrží odkaz na aktuální řádek v seznamu položek, obsažený v parametru formuláře seznamu faktur FilterBy Item. Za tímto účelem napíšeme v obslužné rutině události formuláře seznamu OnOpen kód pro nastavení hodnoty parametru Product request:
Kód 1C v 8.2 UP
&OnClient
Postup otevírání (selhání)

List.Parameters.SetParameterValue("Produkt", FilterByProduct);

Konec procedury

Tady Seznam.Možnosti je seznam parametrů požadavku dynamického seznamu pro atribut List. Hodnota parametru Product je nastavena na stejnou hodnotu jako hodnota parametru formuláře FilterByProduct.

V důsledku toho kliknutím na tlačítko Příjem faktur ve formuláři seznamu položek obdržíme seznam pouze těch faktur, které obsahují aktuálně vybranou položku v seznamu položek.

Informace převzaté z webu

Existuje několik způsobů, jak otevřít formulář seznamu s přednastaveným výběrem. Pojďme se na ně podívat:

  1. První způsob spočívá v tom, že při otevírání formuláře můžete nastavit parametr formuláře Výběr a otevřete formulář seznamu s tímto parametrem. Parametr Výběr představuje strukturu. Názvy prvků odpovídají názvům polí, pomocí kterých se provádí výběr, a hodnoty obsahují hodnoty
    výběr. Toto je možnost rozšíření formuláře spravovaného dynamickým seznamem. To znamená, že existuje pro formuláře, jejichž hlavním atributem je atribut type DynamicList, jako jsou formuláře seznamu a formuláře pro výběr.

Při otevření formuláře se provede výběr na základě zadaného pole. Například v následujícím příkladu je otevřen seznam faktur s výběrem v poli Protistrana rovným „OJSC Rohy a kopyta“.

Hodnota výběru = Nová struktura („Protistrana“ , "JSC rohy a kopyta");
Možnosti výběru= Nová struktura("Výběr", SelectionValue);
OpenForm („Dokument. Účtenka. Formulář seznamu“, Možnosti výběru);

2. Můžete otevřít formulář seznamu bez parametrů:

OpenForm („Dokument. Účtenka. Formulář seznamu“);

A pak v obslužné rutině události formuláře seznamu faktur Když CreatedOnServer napište kód, který vytvoří výběr v dynamickém seznamu, což je hlavní atribut formuláře:

&Na serveru
Postup Když CreatedOnServer(Odmítnutí, Standardní zpracování)
Element výběru = seznam . Výběr. Elementy. Přidat (typ
(„DataCompositionSelectionElement“));
Prvek výběru .LeftValue = Nový Pole rozložení dat("Částka dokumentu");
Výběrový prvek. Srovnávací pohled = Porovnání Rozvržení ViewData. Více ;
Výběrový prvek. použití = pravda;
Výběrový prvek. RightValue = 150000;
Konec procedury

Výhody této metody jsou v tom Zobrazit srovnání výběr lze nastavit nejen Rovná se, stejně jako v prvním případě, a Více, Méně a tak dále.

Ale tato metoda má také velmi významnou nevýhodu: s tímto výběrem se formulář vždy otevře. Kamkoli ji zavolali. Proto by tento formulář neměl být označen jako hlavní. A pokud je to přesto hlavní, pak je před instalací výběru nutné provést nějakou analýzu toho, odkud se tento formulář otevírá. Například analýza parametrů formuláře.

3. A konečně, podmínka výběru může být umístěna ve vlastní žádosti, který vybírá data pro dynamický seznam. Potřebujeme například otevřít seznam faktur, které obsahují položku zvýrazněnou v seznamu položek.

Chcete-li to provést, ve formě seznamu položek vytvořte příkaz a odpovídající tlačítko Spotřební zboží Faktury

Vyplňte obslužnou rutinu provádění pro tento příkaz takto:

&OnClient
Postup Spotřební zboží Faktury(Tým )
ListForm = GetForm("Document.Invoice.ListForm");
ListForm. FilterByProduct = Položky . Seznam . CurrentRow;
ListForm. OTEVŘENO();
Konec procedury

V tomto handleru obdržíme formulář seznamu faktur a předáme jej parametru formuláře Filtrovat podle produktu odkaz na aktuální položku v seznamu položek a otevřete formulář s tímto parametrem.
Poté vytvoříme formulář seznamu dokumentů Prodejní faktura a vytvořte atributy formuláře Filtrovat podle produktu, který použijeme jako parametr formuláře při jeho otevření. Nyní otevřeme paletu vlastností hlavních atributů formuláře Seznam. Nastavíme vlajku CustomRequest a dovnitř
čára Nastavení seznamu pojďme stisknout OTEVŘENO.

V terénu Žádost Zadáme následující text požadavku:

VYBRAT

Číslo dokladu o příjmu,
Dokument Příjem Invoice.Date
Z
Document.ReceiptInvoice AS DocumentReceiptInvoice
KDE
Doklad o příjmu Invoice.Products.Product = &Produkt

V požadavku používáme parametr Produkt, na který bude zaslán odkaz na aktuální řádek v seznamu položek obsažených v atributu formuláře seznam faktur Filtrovat podle produktu. Chcete-li to provést, použijte obslužnou rutinu události ve formuláři seznamu PřiOtevření Pojďme napsat kód pro nastavení hodnoty parametru Product request:

&OnClient
Postup otevírání (selhání)
Seznam . Možnosti . SetParameterValue("Produkt", FilterByProduct);
Konec procedury

Tady Seznam.Možnosti— toto je seznam parametrů požadavku dynamického seznamu pro atribut List. Hodnota parametru Produkt je nastavena na hodnotu parametru formuláře Filtrovat podle produktu. V důsledku toho kliknutím na tlačítko Faktury ve formě seznamu položek obdržíme seznam pouze těch faktur, které obsahují aktuálně vybranou položku v seznamu položek.

— toto je seznam parametrů požadavku dynamického seznamu pro atribut List.

Tento kód umožňuje otevřít seznam dokumentů se zadaným výběrem; můžete také otevřít seznam prvků adresáře s požadovaným výběrem

Kód 1C v 8.2 UP Form = OpenForm("Document. Invoice.Form.ListForm"); //Otevřete formulář
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //Přidat výběr
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //Jak budeme porovnávat
SelectOwner.Use = True; // Zaškrtněte políčko pro použití NewDataCompositionField("Nomenclature")
SelectionOwner.LeftValue = NewDataCompositionField("Účet"); //Jaké podrobnosti použijeme při výběru?
SelectionOwner.RightValue = Object.Account; // A samotný význam výběru

V následujících situacích otevřete formulář seznamu s předdefinovaným výběrem použijte následující metody:

První způsob spočívá v tom, že když otevřete formulář, můžete nastavit parametr Výběrový formulář a otevřít formulář seznamu s tímto parametrem.

Parametr Výběr představuje strukturu. Názvy prvků odpovídají názvům polí, pomocí kterých se provádí výběr, a hodnoty obsahují hodnoty výběru. Toto je možnost rozšíření formuláře spravovaného dynamickým seznamem. To znamená, že existuje pro formuláře, jejichž hlavním atributem je atribut typu DynamicList, například formuláře seznamu a formuláře pro výběr.

Například v následujícím příkladu se otevře seznam faktur s výběrem podle pole Číslo rovné 333.

Kód 1C v 8.2 UE Selection Value = New Structure("Number", "333");
SelectionParameters = Nová struktura("Výběr", SelectionValue);
OpenForm("Dokument. Faktura o příjmu. Formulář seznamu", Možnosti výběru);

Druhý způsob

Můžete otevřít formulář seznamu bez parametrů:

Kód 1C v 8.2 UE OpenForm("Document. Receipt Invoice.List Form");

A pak v obslužné rutině události formuláře pro seznam faktur When CreatedOnServer napište kód, který vytvoří výběr v dynamickém seznamu, což je hlavní atribut formuláře:

Kód 1C v 8.2 UP &OnServer
Postup při vytvoření na serveru (selhání, standardní zpracování)
Element výběru = List.Selection.Elements.Add(Type("Prvek výběru DataComposition"));
SelectionElement.LeftValue = NewDataCompositionField("Číslo");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Konec procedury

Výhody této metody spočívají v tom, že Typ porovnání pro výběr lze nastavit nejen na Equal, jako v prvním případě, ale také na Více, Méně atd.

Ale tato metoda má také velmi významnou nevýhodu: s tímto výběrem se formulář vždy otevře. Kamkoli ji zavolali. Proto by tento formulář neměl být označen jako hlavní. A pokud je to přesto hlavní, pak je před instalací výběru nutné provést nějakou analýzu toho, odkud se tento formulář otevírá. Například analýza parametrů formuláře.

Třetí způsob

Nakonec lze podmínku výběru umístit do vlastního dotazu, který vybere data pro dynamický seznam.

Potřebujeme například otevřít seznam faktur, které obsahují položku zvýrazněnou v seznamu položek.

Chcete-li to provést, ve formě seznamu položek vytvořte příkaz a příslušné tlačítko Příjem faktur.

Vyplňte obslužnou rutinu provádění pro tento příkaz takto:

Kód 1C v 8.2 UP &OnClient
Postup Potvrzení Faktury (příkaz)
SelectionParameters = New Structure("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Dokument. Faktura o příjmu. Formulář seznamu", Možnosti výběru);
Konec procedury

V tomto handleru otevřeme formulář pro seznam faktur a předáme odkaz na aktuální položku v seznamu položek do parametru formuláře FilterByProduct.

Poté vytvoříme formulář pro seznam dokladů: Příjem faktury a vytvoříme parametr formuláře FilterBy Product, kterým otevřeme formulář s požadovaným výběrem.

Nyní otevřeme paletu vlastností hlavního atributu formuláře Seznam. Nastavte příznak Vlastní dotaz a na řádku Nastavení seznamu klikněte na Otevřít.

Do pole Žádost zadejte následující text žádosti:

Kód 1C v 8.2 UP SELECT
Číslo dokladu o příjmu,
Dokument Příjem Invoice.Date
Z
Document.ReceiptInvoice AS DocumentReceiptInvoice
KDE
Doklad o příjmu Invoice.Products.Product = &Produkt

V požadavku použijeme parametr Položka, který obdrží odkaz na aktuální řádek v seznamu položek, obsažený v parametru formuláře seznamu faktur FilterBy Item.

Chcete-li to provést, v obslužné rutině události seznamu formuláře Při CreatedOnServer napíšeme kód pro nastavení hodnoty parametru požadavku na produkt:

Kód 1C v 8.2 UP &OnClient
Postup otevírání (selhání)
List.Parameters.SetParameterValue("Produkt", Parameters.FilterByProduct);
Konec procedury

Zde List.Parameters je seznam dynamických parametrů požadavku na seznam pro atribut List. Hodnota parametru Product je nastavena na stejnou hodnotu jako hodnota parametru formuláře FilterByProduct.

V důsledku toho kliknutím na tlačítko Příjem faktur ve formuláři seznamu položek obdržíme seznam pouze těch faktur, které obsahují aktuálně vybranou položku v seznamu položek.

V následujících situacích otevřít výběrový formulář s výběrem v 1s 8.2 (pravidelné formy), musíme provést nějaké akce. Dostaneme to jako první. Poté nastavíme výběr a otevřeme jej programově, zde je příklad kódu:

Výběr na formuláři ve vstupním poli 1C 8.2 s několika hodnotami

Ve výše uvedeném příkladu jsme se podívali jak nastavit výběr na výběrovém formuláři podle konkrétní hodnoty. Nyní se podíváme na situaci, kdy potřebujete nahradit několik hodnot, může to být například pole nebo uvolněné z výsledku dotazu. Toto je výběr ve vstupním poli 1c s více významy.

Nejprve získáme formulář výběru, v parametrech předáme „Prvek“ (vlastník), nastavíme příznak režimu výběru. Poté vytvoříme seznam hodnot a pole, všimneme si, že jako výběr při nastavování typu porovnání v seznamu může být objekt přítomen pouze s typem ListValues. Do pole přidáme prvky, toto pole pak načteme do Seznamu hodnot, který následně nastavíme ve výběru. Nezapomeňte také povolit příznak pro použití tohoto výběru a nastavit typ porovnání.

Nastavení výběru ve vstupním poli na formuláři v 1C 8.3, Začátek výběru události

Nyní uvažujme výběr ve vstupním poli na ve zvládnutelné formě v 1C 8.3. Najdeme ve formuláři prvek, který nás zajímá, ve kterém nastavíme výběr, v našem případě je to pole „Organizace“. Najdeme událost “Start výběru”, klikneme na lupu a ocitneme se v postupu. Vidíme parametr Data výběru, tento parametr je typu ValueList. Abychom výběr omezili na potřebné prvky, musíme vyplnit Seznam hodnot. Prvky můžeme vybírat pouze na serveru, proto vytvoříme proceduru s direktivou kompilace &OnServer. V tomto postupu vyplňte Údaje o výběru.