1c ako otvoriť formulár s výberom. Ako otvoriť formulár zoznamu s určitým výberom? Môžete otvoriť formulár zoznamu bez parametrov

Ako otvoriť formulár zoznamu s určitým výberom?

Existuje niekoľko spôsobov, ako otvoriť formulár zoznamu s určitým preddefinovaným výberom. Zoberme si ich v poradí:

1. Prvým spôsobom je, že pri otváraní formulára môžete nastaviť parameter formulára Selection a otvoriť formulár zoznamu s týmto parametrom. Parameter Výber je štruktúra. Názvy prvkov zodpovedajú názvom polí, pomocou ktorých sa uskutočňuje výber, a hodnoty obsahujú hodnoty výberu. Toto je možnosť rozšírenia spravovaného formulára dynamický zoznam. To znamená, že existuje pre formuláre, ktorých hlavným atribútom je atribút typu Dynamický zoznam, ako je zoznam formulárov a výber formulárov.

V procese otvárania formulára sa filter nastaví pre zadané pole. Napríklad nasledujúci príklad otvorí zoznam potvrdení filtrovaných podľa poľa Číslo, ktoré je 333.

SelectionValue = Nová štruktúra("Číslo", "333");

SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Document.Invoice.ListForm",ChoiceParameters);

2. Formulár zoznamu môžete otvoriť bez parametrov:

OpenForm("Document.Invoice.ListForm");

A potom v obsluhe udalosti formulára zoznamu príjmov OnCreateOnServer napíšte kód, ktorý vytvorí výber v dynamickom zozname, čo je hlavný atribút formulára:

&Na serveri

Postup na CreationOnServer (zlyhanie, štandardné spracovanie)

Element výberu = Zoznam. Výber. Prvky. Add(Type("Prvok výberu kompozície údajov"));

SelectionElement.LeftValue = New DataCompositionField("Number");

SelectionItem.ComparisonType = DataCompositionComparisonType.More;

SelectionItem.Use = true;

SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;

SelectionItem.RightValue = "000000001";

EndProcedure

Výhody túto metódu tým, že Typ porovnania výberu je možné nastaviť nielen Rovná sa, ako v prvom prípade, ale aj Viac, Menej atď.

Táto metóda má však veľmi významnú nevýhodu: pri tomto výbere sa formulár vždy otvorí. Odkiaľ ju zavolali. Preto by tento formulár nemal byť priradený ako hlavný. A ak je to napriek tomu hlavný, potom pred nastavením výberu je potrebné poskytnúť nejakú analýzu toho, odkiaľ sa tento formulár otvára. Napríklad analýzou parametrov formulára.

3. Nakoniec možno podmienku výberu umiestniť do ľubovoľného dotazu, ktorý vyberá údaje pre dynamický zoznam. Potrebujeme napríklad otvoriť zoznam došlých faktúr, ktoré obsahujú položku vybratú v zozname položiek.

Aby sme to urobili, vo forme zoznamu položiek vytvoríme príkaz a príslušné tlačidlo Príjem faktúr.

Vyplňte obsluhu vykonávania tohto príkazu takto:

&AtClient

Postup fakturácie (príkaz)

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

ListForm.FilterByItem = Items.List.CurrentRow;

ListForm.Open();

EndProcedure

V tomto handler dostaneme formulár zoznamu došlých faktúr a do parametra formulára FilterByItem odovzdáme odkaz na aktuálnu položku v zozname položiek a otvoríme formulár s týmto parametrom.

Potom vytvoríme formulár zoznamu dokumentov Nákupná faktúra a vytvorte atribút formulára FilterByProduct , ktorý použijeme ako parameter formulára pri jeho otvorení. Teraz otvorme paletu vlastností hlavného atribútu formulára Zoznam. Nastavíme vlajku ArbitraryRequest a v rade Prispôsobenie zoznamu kliknite na Otvoriť.

Do poľa Žiadosť zadajte nasledujúci text žiadosti:

VYBERTE SI

DocumentInvoice Invoice.Number,

DocumentIncoming Invoice.Date

OD

Document.Incoming Invoice AS DocumentIncoming Invoice

KDE

DocumentReceipt Invoice.Goods.Item = &Položka

V požiadavke používame parameter Položka, ktorému bude odovzdaná väzba na aktuálny riadok v zozname položiek obsiahnutom v parametri formulára zoznamu došlých faktúr FilterByItem. Ak to chcete urobiť, v obslužnom programe udalosti formulára zoznamu OnOpening napíšte kód na nastavenie hodnoty parametra požiadavky Product :

&AtClient

Postup pri otváraní (porucha)

List.Parameters.SetParameterValue("Položka", FilterByItem);

EndProcedure

Tu Zoznam.Parametre je zoznam parametrov dopytu dynamického zoznamu pre atribút Zoznam. Hodnota parametra Item je nastavená na rovnakú hodnotu ako hodnota parametra formulára FilterByItem.

V dôsledku toho po stlačení tlačidla Príjem faktúr vo forme zoznamu položiek dostaneme zoznam len tých došlých faktúr, ktoré obsahujú položku, ktorá je aktuálne vybratá v zozname položiek.

Demo pre 3. možnosť sa nachádza v adresári 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Príklad je spustený na platforme verzie 8.2.9.356.

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

Pre 1C 8.2:
Existuje niekoľko spôsobov, ako otvoriť formulár zoznamu s určitým preddefinovaným výberom. Zoberme si ich v poradí:

1. Prvým spôsobom je, že pri otváraní formulára môžete nastaviť parameter formulára Selection a otvoriť formulár zoznamu s týmto parametrom. Parameter Výber je štruktúra. Názvy prvkov zodpovedajú názvom polí, pomocou ktorých sa uskutočňuje výber, a hodnoty obsahujú hodnoty výberu. Toto je možnosť rozšírenia formulára spravovaného dynamickým zoznamom. To znamená, že existuje pre formuláre, ktorých hlavným atribútom je atribút typu Dynamický zoznam, napríklad pre formuláre zoznamov a výberové formuláre.

V procese otvárania formulára sa filter nastaví pre zadané pole.
Kód 1C v 8.2 UE // Napríklad v nasledujúcom príklade sa otvorí zoznam došlých faktúr s výberom v poli Číslo rovným 333.
SelectionValue = Nová štruktúra("Číslo", "333");
SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Document.Invoice.ListForm",ChoiceParameters);

// Napríklad nasledujúci príklad otvorí zoznam faktúr
// s výberom v poli Counterparty, ktorý sa rovná "JSC Horns and Hooves".
SelectionValue \u003d Nová štruktúra („Protistrana“, „JSC Rohy a kopytá“);
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Document.Invoice.ListForm",Parametre voľby);

2. Formulár zoznamu môžete otvoriť bez parametrov:
Kód 1C v 8.2 UE OpenForm("Document.Invoice.ListForm");

A potom v obslužnom programe udalosti formulára zoznamu došlých faktúr Pri vytvorení na serveri napíšte kód, ktorý vytvorí výber v dynamickom zozname, čo je hlavný atribút formulára:
Kód 1C v 8.2 UE &OnServer

Element výberu = Zoznam. Výber. Prvky. Add(Type("Prvok výberu kompozície údajov"));
SelectionElement.LeftValue = New DataCompositionField("Number");

SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;
SelectionItem.RightValue = "000000001";
EndProcedure

&Na serveri
Postup na CreationOnServer (zlyhanie, štandardné spracovanie)
ElementFilter = List.Filter.Items.Add(Type
("DataCompositionSelectionElement");
SelectionElement.LeftValue = New DataCompositionField ("DocumentAmount");
SelectionItem.ComparisonType = DataCompositionComparisonType.More;
SelectionItem.Use = true;
Element výberu.PraváHodnota = 150000;
EndProcedure

Výhodou tejto metódy je, že ComparisonType výber je možné nastaviť nielen Rovnaké, ako v prvom prípade, ale aj Viac, Menej atď.

Táto metóda má však veľmi významnú nevýhodu: pri tomto výbere sa formulár vždy otvorí. Odkiaľ ju zavolali. Preto by tento formulár nemal byť priradený ako hlavný. A ak je to napriek tomu hlavný, potom pred nastavením výberu je potrebné poskytnúť nejakú analýzu toho, odkiaľ sa tento formulár otvára. Napríklad analýzou parametrov formulára.

3. Nakoniec možno podmienku výberu umiestniť do ľubovoľného dotazu, ktorý vyberá údaje pre dynamický zoznam. Potrebujeme napríklad otvoriť zoznam došlých faktúr, ktoré obsahujú položku vybratú v zozname položiek.

K tomu vytvoríme vo forme zoznamu položiek príkaz a príslušné tlačidlo Došlé faktúry.

Vyplňte obsluhu vykonávania tohto príkazu takto:
Kód 1C v 8.2 UE &OnClient
Postup fakturácie (príkaz)

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

EndProcedure

V tomto handler dostaneme formulár zoznamu došlých faktúr a do parametra formulára FilterByItem odovzdáme odkaz na aktuálnu položku v zozname položiek a otvoríme formulár s týmto parametrom.

Následne vytvoríme formulár zoznamu dokladov Invoice Invoice a vytvoríme atribút formulára FilterByProduct, ktorý použijeme ako parameter formulára pri jeho otvorení. Teraz otvorme paletu vlastností hlavného atribútu formulára Zoznam. Nastavte príznak ArbitraryRequest a v riadku Nastavenia zoznamu kliknite na OTVORENÉ.

Do poľa Žiadosť zadajte nasledujúci text žiadosti:
Kód 1C v 8.2 UE SELECT
DocumentInvoice Invoice.Number,
DocumentIncoming Invoice.Date
OD
Document.Incoming Invoice AS DocumentIncoming Invoice
KDE
DocumentReceipt Invoice.Goods.Item = &Položka

V požiadavke používame parameter Položka, ktorému bude odovzdaná väzba na aktuálny riadok v zozname položiek, obsiahnutý v parametri formulára došlých faktúr FilterBy Item list. Ak to chcete urobiť, v obslužnom nástroji udalosti formulára zoznamu OnOpening napíšte kód na nastavenie hodnoty parametra požiadavky na produkt:
Kód 1C v 8.2 UP
&AtClient
Postup pri otváraní (porucha)

List.Parameters.SetParameterValue("Položka", FilterByItem);

EndProcedure

Tu Zoznam.Parametre je zoznam parametrov dopytu dynamického zoznamu pre atribút Zoznam. Hodnota parametra Item je nastavená na rovnakú hodnotu ako hodnota parametra formulára FilterByItem.

Výsledkom je, že stlačením tlačidla Faktúry vo formulári zoznamu položiek dostaneme zoznam len tých došlých faktúr, ktoré obsahujú práve vybratú položku v zozname položiek.

Informácie prevzaté zo stránky

Existuje niekoľko spôsobov, ako otvoriť formulár zoznamu s určitým preddefinovaným výberom. Zvážte ich:

  1. Prvý spôsob je, že pri otváraní formulára môžete nastaviť parameter formulára Výber a otvorte formulár zoznamu s týmto parametrom. Parameter Výber je štruktúra. Názvy prvkov zodpovedajú názvom polí, pomocou ktorých sa uskutočňuje výber, a hodnoty obsahujú hodnoty
    výber. Toto je možnosť rozšírenia formulára spravovaného dynamickým zoznamom. To znamená, že existuje pre formuláre, ktorých hlavným atribútom je atribút typu DynamicList, ako je zoznam formulárov a výber formulárov.

V procese otvárania formulára sa filter nastaví pre zadané pole. Napríklad v nasledujúcom príklade sa otvorí zoznam odoslaných faktúr s výberom v poli Protistrana, ktorý sa rovná "JSC Rohy a kopytá".

Hodnota výberu = Nová štruktúra ("Dodávateľ" , "JSC Rohy a kopytá");
Možnosti výberu= New Structure("Filter",FilterValue);
OpenForm ("Dokument. Faktúra. Formulár zoznamu", Možnosti výberu);

2. Formulár zoznamu môžete otvoriť bez parametrov:

OpenForm("Document.Invoice.ListForm");

A potom v obsluhe udalosti formulára zoznamu príjmov OnCreateOnServer napíšte kód, ktorý vytvorí výber v dynamickom zozname, čo je hlavný atribút formulára:

&Na serveri
Postup OnCreateOnServer(Odmietnutie, Štandardné spracovanie)
SelectionItem = Zoznam . Výber. Prvky. Pridať (Typ
("DataCompositionSelectionElement");
SelectionItem .LeftValue = Nové LayoutFieldData("Suma dokumentu");
ElementSelection . Typ porovnania = ViewComparisonCompositionData. Viac;
ElementSelection . použitie = pravda;
ElementSelection . RightValue = 150000;
EndProcedure

Výhody tejto metódy spočívajú v tom KindComparison výber je možné nastaviť nielen Rovná sa, ako v prvom prípade, a Viac, Menej atď.

Táto metóda má však veľmi významnú nevýhodu: pri tomto výbere sa formulár vždy otvorí. Odkiaľ ju zavolali. Preto by tento formulár nemal byť priradený ako hlavný. A ak je to napriek tomu hlavný, potom pred nastavením výberu je potrebné poskytnúť nejakú analýzu toho, odkiaľ sa tento formulár otvára. Napríklad analýzou parametrov formulára.

3. A nakoniec, podmienku výberu možno umiestniť do ľubovoľného dotazu A, ktorý vyberá údaje pre dynamický zoznam. Potrebujeme napríklad otvoriť zoznam faktúr, ktoré obsahujú položku vybratú v zozname položiek.

Aby sme to urobili, vo forme zoznamu položiek vytvoríme príkaz a príslušné tlačidlo Spotrebný materiál Faktúry

Vyplňte obsluhu vykonávania tohto príkazu takto:

&AtClient
Postup Spotrebný materiál Faktúry(tím)
ListForm = GetForm("Document.Invoice.ListForm");
FormList. FilterByProduct = Položky . Zoznam . CurrentLine;
FormList. OTVORENÉ();
EndProcedure

V tomto handleri získame formulár zoznamu došlých faktúr a prenesieme ho do parametra formulára FilterPodľaProduktu odkaz na aktuálnu položku v zozname položiek a otvorte formulár s týmto parametrom.
Potom vytvoríme formulár zoznamu dokumentov Faktúra a vytvárať rekvizity formulárov FilterPodľaProduktu, ktorý pri otvorení použijeme ako parameter formulára. Teraz otvorme paletu vlastností hlavného atribútu formulára Zoznam. Nastavíme vlajku ArbitraryRequest a v
riadok Prispôsobenie zoznamu stlačte tlačidlo OTVORENÉ.

V teréne Žiadosť zadajte nasledujúci text dopytu:

VYBERTE SI

DocumentInvoice Invoice.Number,
DocumentIncoming Invoice.Date
OD
Document.Incoming Invoice AS DocumentIncoming Invoice
KDE
DocumentReceipt Invoice.Goods.Item = &Položka

V požiadavke používame parameter Produkt, v ktorom sa prenesie odkaz na aktuálny riadok v zozname položiek obsiahnutom v atribúte formulára zoznamu nákladných listov. FilterPodľaProduktu. Na tento účel použite obslužný program udalosti vo formulári zoznamu Na Otvorení Napíšeme kód na nastavenie hodnoty parametra Product request:

&AtClient
Postup pri otváraní (porucha)
Zoznam . Možnosti . SetParameterValue("Produkt", FilterByProduct);
EndProcedure

Tu Zoznam.Parametre je zoznam parametrov dopytu dynamického zoznamu pre atribút Zoznam. Hodnota parametra Produkt nastavte na hodnotu parametra formulára FilterPodľaProduktu. V dôsledku toho po stlačení tlačidla Výdavkové faktúry vo forme zoznamu položiek dostaneme zoznam len tých došlých faktúr, ktoré obsahujú položku, ktorá je aktuálne vybratá v zozname položiek.

je zoznam parametrov dopytu dynamického zoznamu pre atribút Zoznam.

Tento kód vám umožňuje otvoriť zoznam dokumentov s nastaveným filtrom, môžete tiež otvoriť zoznam prvkov adresára s požadovaným filtrom

Kód 1C v 8.2 UE Form = OpenForm("Document.Invoice.Form.ListForm"); //Otvorte formulár
FilterOwner =Form.List.Filter.Items.Add(Type("DataCompositionFilterItem")); //Pridať výber
SelectionOwner.ComparisonType = DataCompositionComparisonType.Equal; //Ako budeme porovnávať
SelectionOwner.Use = true; // Začiarknite políčko na použitie New DataCompositionField("Nomenclature")
SelectionOwner.LeftValue = Nové pole DataComposition ("Účet"); //Podľa ktorých rekvizít urobíme selekciu
SelectionOwner.RightValue = Object.Account; // A samotná hodnota výberu

Komu otvorte formulár zoznamu s preddefinovaným výberom použite nasledujúce metódy:

Prvý spôsob spočíva v tom, že pri otváraní formulára môžete nastaviť parameter formulára Selection a otvoriť formulár zoznamu s týmto parametrom.

Parameter Výber je štruktúra. Názvy prvkov zodpovedajú názvom polí, pomocou ktorých sa uskutočňuje výber, a hodnoty obsahujú hodnoty výberu. Toto je možnosť rozšírenia formulára spravovaného dynamickým zoznamom. To znamená, že existuje pre formuláre, ktorých hlavným atribútom je atribút typu DynamicList, napríklad formuláre zoznamu a formuláre výberu.

Napríklad nasledujúci príklad otvorí zoznam potvrdení filtrovaných podľa poľa Číslo, čo je 333.

Kód 1C v 8.2 UE SelectionValue = New Structure("Number", "333");
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Document.Invoice.ListForm",ChoiceParameters);

Druhý spôsob

Môžete otvoriť formulár zoznamu bez parametrov:

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

A potom v obslužnom programe udalosti formulára zoznamu došlých faktúr Pri vytvorení na serveri napíšte kód, ktorý vytvorí výber v dynamickom zozname, čo je hlavný atribút formulára:

Kód 1C v 8.2 UE &OnServer
Postup na CreationOnServer (zlyhanie, štandardné spracovanie)
Element výberu = Zoznam. Výber. Prvky. Add(Type("Prvok výberu kompozície údajov"));
SelectionElement.LeftValue = New DataCompositionField("Number");
SelectionItem.ComparisonType = DataCompositionComparisonType.More;
SelectionItem.Use = true;
SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;
SelectionItem.RightValue = "000000001";
EndProcedure

Výhodou tejto metódy je, že Typ porovnania výberu možno nastaviť nielen Rovnaké, ako v prvom prípade, ale Väčšie, Menšie atď.

Táto metóda má však veľmi významnú nevýhodu: pri tomto výbere sa formulár vždy otvorí. Odkiaľ ju zavolali. Preto by tento formulár nemal byť priradený ako hlavný. A ak je to napriek tomu hlavný, potom pred nastavením výberu je potrebné poskytnúť nejakú analýzu toho, odkiaľ sa tento formulár otvára. Napríklad analýzou parametrov formulára.

Tretia cesta

A nakoniec, podmienku výberu možno umiestniť do ľubovoľného dotazu, ktorý vyberá údaje pre dynamický zoznam.

Potrebujeme napríklad otvoriť zoznam došlých faktúr, ktoré obsahujú položku vybratú v zozname položiek.

K tomu vytvoríme vo forme zoznamu položiek príkaz a príslušné tlačidlo Došlé faktúry.

Vyplňte obsluhu vykonávania tohto príkazu takto:

Kód 1C v 8.2 UE &OnClient
Postup fakturácie (príkaz)
ChoiceParameters = New Structure("FilterByItem", Items.List.CurrentLine);
OpenForm("Document.Invoice.ListForm",ChoiceParameters);
EndProcedure

V tomto handleri otvoríme formulár pre zoznam došlých faktúr, pričom do parametra formulára FilterByItem prenesieme odkaz na aktuálnu položku v zozname položiek.

Následne vytvoríme formulár pre zoznam dokladov Došlá faktúra a vytvoríme parameter formulára FilterByProduct, ktorým otvoríme formulár s požadovaným výberom.

Teraz otvorme paletu vlastností hlavného atribútu formulára Zoznam. Nastavte príznak CustomRequest a kliknite na Otvoriť v riadku Nastavenia zoznamu.

Do poľa Žiadosť zadajte nasledujúci text žiadosti:

Kód 1C v 8.2 UE SELECT
DocumentInvoice Invoice.Number,
DocumentIncoming Invoice.Date
OD
Document.Incoming Invoice AS DocumentIncoming Invoice
KDE
DocumentReceipt Invoice.Goods.Item = &Položka

V požiadavke používame parameter Položka, ktorému bude odovzdaná väzba na aktuálny riadok v zozname položiek, obsiahnutý v parametri formulára došlých faktúr FilterBy Item list.

Ak to chcete urobiť, v obslužnom programe udalosti zoznamu OnCreateAtServer napíšte kód na nastavenie hodnoty parametra požiadavky na produkt:

Kód 1C v 8.2 UE &OnClient
Postup pri otváraní (porucha)
List.Parameters.SetParameterValue("Produkt", Parameters.FilterByProduct);
EndProcedure

Tu List.Parameters je zoznam parametrov dopytu dynamického zoznamu pre atribút List. Hodnota parametra Item je nastavená na rovnakú hodnotu ako hodnota parametra formulára FilterByItem.

Výsledkom je, že stlačením tlačidla Faktúry vo formulári zoznamu položiek dostaneme zoznam len tých došlých faktúr, ktoré obsahujú práve vybratú položku v zozname položiek.

Komu otvorenie výberového formulára s výberom za 1s 8.2 (pravidelné formy), musíme vykonať nejaké akcie. Najprv to dostaneme. Potom nastavíme výber a otvoríme ho programovo, tu je príklad kódu:

Výber na formulári vo vstupnom poli 1C 8.2 s niekoľkými hodnotami

Vo vyššie uvedenom príklade sme uvažovali ako nastaviť výber na výberovom formulári za konkrétnu hodnotu. Teraz uvažujme o situácii, keď potrebujete nahradiť niekoľko hodnôt, napríklad to môže byť pole aj vyloženie z výsledku dotazu. Toto je výber vo vstupnom poli 1s s viacerými významami.

Najprv dostaneme formulár výberu, v parametroch prejdeme "Prvok" (vlastník), nastavíme príznak režimu výberu. Potom vytvoríme zoznam hodnôt a pole, všimneme si, že ako výber, keď je nastavený typ porovnania v zozname, môže existovať objekt iba s typom Zoznam hodnôt. Do poľa pridáme prvky, toto pole potom načítame do Zoznamu hodnôt, ktorý následne nastavíme vo výbere. Nezabudnite tiež povoliť príznak pre používanie tohto výberu a nastaviť Typ porovnania.

Nastavenie výberu vo vstupnom poli vo formulári v 1C 8.3, udalosť StartChoice

Teraz zvážte výber vo vstupnom poli zapnutý riadený formulár v 1C 8.3. Nájdite vo formulári prvok, ktorý nás zaujíma, v ktorom nastavíme výber, v našom prípade je to pole "Organizácia". Nájdeme udalosť „StartChoice“, klikneme na lupu a ocitneme sa v postupe. Vidíme parameter ChoiceData, tento parameter je typu ValueList. Aby sme výber obmedzili na potrebné prvky, musíme vyplniť Zoznam hodnôt. Elementy môžeme vyberať len na serveri, preto vytvoríme procedúru s direktívou kompilácie &AtServer. V tomto postupe vyplníme Údaje o výbere.