Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Sigurnost
  • 1c uf otvorite obrazac za odabir sa selekcijom. Kako postaviti izbor u obliku liste imenika? Postavljanje odabira u prilagođenom načinu rada

1c uf otvorite obrazac za odabir sa selekcijom. Kako postaviti izbor u obliku liste imenika? Postavljanje odabira u prilagođenom načinu rada

Ovaj kod vam omogućava da otvorite listu dokumenata sa odabranim odabirom, možete otvoriti i listu elemenata direktorija sa željenim odabirom

Code 1C v 8.2 UP Form = OpenForm ("Document.Invoice.Form.ListForm"); // Otvorite obrazac
SelectionOwner = Form.List.Selection.Elements.Add (Type ("DataCompositionFeedbackElement")); // Dodaj odabir
SelectOwner.CompareType = DataCompositionComparisonType.Equal; // Kako ćemo uporediti
SelectionOwner.Use = Tačno; // Postavite potvrdni okvir za korištenje NewDataCompositionField ("Nomenklatura")
SelectOwner.LeftValue = NewDataCompositionField ("Counterparty"); // Za koje rekvizite ćemo napraviti selekciju
SelectionOwner.RightValue = Object.Contractor; // I sama vrijednost odabira

Da bi otvorite obrazac liste sa unapred postavljenim izborom koristite sljedeće metode:

Prvi način je da kada otvorite obrazac, možete postaviti parametar obrasca Selection i otvoriti obrazac liste sa ovim parametrom.

Parametar Selection je struktura. Imena elemenata odgovaraju nazivima polja po kojima se vrši selekcija, a vrijednosti sadrže vrijednosti selekcije. Ovo je opcija proširenja obrasca kojim se upravlja dinamičkom listom. Odnosno, postoji za forme, čiji je glavni atribut atribut tipa DynamicList, na primjer, za obrasce liste i obrasce za odabir.

Na primjer, sljedeći primjer otvara listu računa sa izborom za polje Broj jednakim 333.

Kod 1C v 8.2 UE SelectionValue = Nova struktura ("Broj", "333");
SelectionParameters = Nova struktura ("Izbor", SelectionParameters);
OpenForm ("Document.Invoice.ListForm", SelectionParameters);

Drugi način

Možete otvoriti obrazac liste bez parametara:

Code 1C v 8.2 UP OpenForm ("Dokument. Račun prijema. Obrazac liste");

A zatim, u rukovatelju događaja oblika liste računa AtCreateOnServer, napišite kod koji kreira odabir u dinamičkoj listi, što je glavni atribut obrasca:

Code 1C v 8.2 UP & OnServer
Procedura OnCreateAtServer (Neuspjeh, StandardProcessing)
SelectionElement = List.Selection.Elements.Add (Type ("DataCompositionFeedback"));
SelectionElement.LeftValue = NewDataCompositionField ("Broj");
SelectionItem.ComparisonView = DataCompositionComparisonView.More;
SelectionItem.Usage = Tačno;
SelectionItem.DisplayMode =DataCompositionSettingsItemDisplayMode.Nije dostupno;
SelectionItem.RightValue = "000000001";
Kraj procedure

Prednosti ove metode su u tome što se uporedni prikaz odabira može postaviti ne samo Jednako, kao u prvom slučaju, već i Više, Manje itd.

Ali ova metoda ima i vrlo značajan nedostatak: s ovim odabirom, obrazac će se uvijek otvoriti. Odakle je bila zvana. Stoga ovaj obrazac ne treba dodijeliti glavnom. A ako je i dalje glavni, onda je prije postavljanja odabira potrebno predvidjeti neku vrstu analize odakle se ovaj obrazac otvara. Na primjer, analizom parametara obrasca.

Treći način

Konačno, uslov filtera se može postaviti u proizvoljan upit koji bira podatke za dinamičku listu.

Na primjer, trebamo otvoriti listu računa prijema koji sadrže stavku koja je istaknuta u listi stavki.

Da biste to učinili, u obliku liste artikala kreirajte komandu i odgovarajuće dugme Prijem faktura.

Popunite obrađivač za izvršavanje ove naredbe na sljedeći način:

1C v 8.2 UP & ONCUSTOMER kod
Fakture prijema procedura (komanda)
ChoiceParameters = Nova struktura ("FilterByProduct", Elements.List.CurrentRow);
OpenForm ("Document.Invoice.ListForm", SelectionParameters);
Kraj procedure

U ovom rukovaocu otvaramo obrazac liste faktura prijema, prenoseći vezu na trenutnu stavku na listi stavki u parametar obrasca FilterByProduct.

Zatim ćemo kreirati obrazac za listu dokumenata računa o prijemu i kreirati parametar obrasca Filtriraj po proizvodu koji ćemo koristiti da otvorimo obrazac sa traženim odabirom.

Sada otvorimo paletu svojstava glavnog atributa obrasca Lista. Postavite oznaku Custom Request i kliknite Otvori u redu Postavke liste.

U polje Zahtjev unesite sljedeći tekst zahtjeva:

Šifra 1C v 8.2 UP SELECT
Račun prijema dokumenta Broj,
Račun prijema dokumenta Datum
OD
Document.Incoming tovarni list AS DocumentIncoming tovarni list
GDJE
Dokument Dolazni račun.Roba.Proizvod = & Proizvod

U zahtjevu koristimo parametar Proizvod u koji će biti poslana veza na trenutni red u listi stavki sadržanih u parametru liste faktura prijema Filtriraj po proizvodu.

Da biste to učinili, u rukovatelju događaja obrasca liste AtCreateAtServer, napišite kod za postavljanje vrijednosti parametra zahtjeva za proizvod:

1C v 8.2 UP & ONCUSTOMER kod
Otvorena procedura (neuspjeh)
List.Parameters.SetValueParameter ("Proizvod", Parameters.FilterBy Product);
Kraj procedure

Ovdje List.Parameters je lista parametara upita dinamičke liste za atribut List. Vrijednost parametra proizvoda postavljena je jednaka vrijednosti parametra obrasca Filtriraj po proizvodu.

Kao rezultat toga, klikom na dugme Računi prijema u obrascu liste artikala, dobićemo listu samo onih računa o prijemu koji sadrže artikl koji je trenutno odabran na listi artikala.

Izbor na kontrolisanim oblicima u 1C 8.3

U članku će se razmotriti opcije za postavljanje odabira u kontroliranim oblicima 1C 8.3. Izbor za dinamičku listu može se postaviti statički ili dinamički, u korisničkom interfejsu ili u konfiguratoru. U nastavku ćemo razmotriti sve opcije odabira.

  • Postavljanje odabira u konfiguratoru

Postavljanje odabira u prilagođenom načinu rada

Dinamička lista, za razliku od tabele ili stabla vrednosti, je pogodnije rešenje za implementaciju obrazaca koji sadrže bilo koje liste, jer dinamička lista pruža najširi skup alata za rad sa selekcijom, grupiranjem polja, sortiranjem. Ovaj izbor se može podesiti kada se radi u korisničkom modu ili u konfiguratoru, princip je isti.

Da biste postavili filtriranje u poslovnom načinu, pozovite naredbu "Konfiguriraj listu".

Otvoriće se prozor.


Kartica "izbor" sadrži listu polja koja se nalaze na trenutnoj listi. Odaberite polja liste po kojima ćemo filtrirati. To se može učiniti dvostrukim klikom ili korištenjem drag and drop.


Postavite tip poređenja i vrijednost, kliknite na "Završi uređivanje", odabir je postavljen.


Kada podesite izbor u poslovnom modu, polja za tzv. brze selekcije se automatski kreiraju u obrascu liste.


Da bi 1C platforma automatski kreirala polja za brzi odabir, prilikom razvoja obrasca u konfiguratoru morate odrediti grupu korisničkih postavki.


Ovaj izbor će biti sačuvan samo za trenutnog korisnika, što omogućava fleksibilno prilagođavanje dinamičke liste. Međutim, ako je zadatak da napravimo fiksni izbor za određenu listu za sve korisnike sistema, to možemo riješiti samo preko konfiguratora.

Postavljanje odabira u konfiguratoru

Radeći u konfiguratoru, možemo podesiti izbor dinamičke liste od dva tipa - fiksne i dinamičke. Fiksni odabir se konfiguriše jednom, dinamički ili programski - možete ga podesiti u zavisnosti od podataka u sistemu.

Princip postavljanja fiksnog odabira u konfiguratoru se ne razlikuje od gore opisanog podešavanja u korisničkom modu. Da bismo postavili filter, moramo otvoriti postavke dinamičke liste.


Otvoriće se prozor.


Odabir se postavlja na isti način kao u korisničkom modu.

Opcija "Uključi u korisnička podešavanja" određuje da li će izbor postavljen u konfiguratoru biti dostupan u korisničkom režimu preko stavke menija "Prilagodi listu".


Dinamički (softverski) odabir

Često postoji potreba za programskim postavljanjem filtera, na primjer, prilikom otvaranja obrasca za odabir, kada trebamo otvoriti upravljani obrazac s filterom. Parametar se prosljeđuje u obrazac i odabir se postavlja ovim parametrom. Uobičajeni primjer ovoga je uklanjanje stavki direktorija od strane vlasnika.

Metode

Ako razvijena konfiguracija sadrži podsistem BSP "Osnovna funkcionalnost", izbor programa u dinamičkoj listi može se postaviti standardnim metodom:

SharedPurposeClientServer.SetDynamicListFeatured ()

Oznaka ove metode je:

Dynamic List Tip: DynamicList - Lista na kojoj želite da postavite filter.

Naziv polja Vrsta: String - Polje prema kojem treba postaviti filter.

Prava vrijednost Tip: proizvoljan - vrijednost odabira (Opcionalno. Zadana vrijednost: Undefined. Pažnja! Ako prođete Undefined, vrijednost se neće promijeniti).

ViewComparison Tip: DataCompositionComparisonKind - uvjet odabira.

Zastupanje Tip: String - Reprezentacija stavke sastava podataka (Opcionalno. Podrazumevana vrijednost: Nedefinirano. Ako je navedeno, prikazuje se samo oznaka upotrebe sa specificiranim prikazom (vrijednost se ne prikazuje. Da biste obrisali, tako da se vrijednost ponovo prikazuje, proslijedite prazan niz).

Upotreba Upišite: Boolean - polje za potvrdu da biste koristili ovaj odabir (Opciono. Podrazumevano: Nedefinisano).

Način prikaza Upišite :DataCompositionSettingsItemDisplayMode - Kako se ovaj odabir prikazuje korisniku. Moguće vrijednosti:

  • ItemDisplay ModeDataCompositionSettings.QuickAccess - U grupi brzih postavki iznad liste.
  • Stavka Display ModeDataCompositionSettings.Normal - Na postavku liste (u podmeniju Više).
  • DataCompositionSettingsDisplayMode.Unavailable - Spriječite korisnika da promijeni ovaj odabir.

IdentifierCustomSettings Tip: String - Jedinstveni identifikator za ovaj odabir (Koristi se za povezivanje sa prilagođenim postavkama).

Da biste uklonili neku vrijednost odabira, trebate koristiti standardnu ​​metodu:

ClientServer opšte namene. DeleteElementsSelectionGroupsDynamicList ()

Oznaka ove metode je:

Dynamic List Tip: DynamicList - atribut obrasca za koji želite postaviti filter.

Naziv polja Vrsta: String - naziv polja izgleda (ne koristi se za grupe).

Zastupanje Tip: String - Reprezentacija polja izgleda.

Ako u sistemu nema BSP-a, izbor se može postaviti nezavisno pomoću objekta DataComposition Field.

SelectionElement = List.Selection.Elements.Add (Type ("DataCompositionFeedback")); SelectionElement.LeftValue = NewDataCompositionField ("puno ime"); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; SelectItem.Display Mode =DataCompositionSettingsItemDisplayMode.QuickAccess; // Opcioni element odabira RightValue = "Ivanov";

Ovaj odabir će odabrati redove u kojima je vrijednost "Puno ime" = "Ivanov".

Za korištenje logičkog "AND", "OR", "NOT", tip podataka DataCompositionSelectionElementsGroup je namijenjen

SelectionGroup = List.Selection.Elements.Add (Type ("DataCompositionOptionElementGroup")); SelectionGroup.GroupType = DataCompositionGroupGroupType.Group OR; SelectionElement = SelectionGroup.Elements.Add (Type ("DataCompositionOptionElement")); SelectionElement.LeftValue = NewDataCompositionField ("puno ime"); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; Element odabira.RightValue = "Ivanov"; SelectionElement = SelectionGroup.Elements.Add (Type ("DataCompositionOptionElement")); SelectionElement.LeftValue = NewDataCompositionField ("puno ime"); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; Selection Element.RightValue = "Petrov";

Ovaj odabir će odabrati redove u kojima je vrijednost "Puno ime" = "Ivanov" ili "Petrov".

Odabir u dinamičkoj listi se također može izvršiti promjenom teksta upita dinamičke liste. Ova opcija radi kada se dinamička lista napravi putem "proizvoljnog zahtjeva".


Da biste to učinili, dodajte uslov "WHERE is True" u tekst upita...


Kao što vidite, ovaj pristup je kompaktniji u smislu pisanja koda. Što su uslovi odabira u tabelarnom odeljku koje želimo da uspostavimo složeniji, opcija će biti glomaznija korišćenjem selekcije kroz DataCompositionSelectionElement. Međutim, primjer sa promjenom teksta zahtjeva ima svoje nedostatke - ova implementacija nije otporna na promjene koda. Na primjer, napravili ste takvu implementaciju i zaboravili, ali ako u budućnosti želite izmijeniti tekst zahtjeva dodavanjem bilo kojeg operatora nakon WHERE (ORDER, LOAD), morate zapamtiti da programski kod sadrži:

List.TextRequest = List.TextRequest + "I DirectoryUsers.FULL NAME IN (" "Ivanov" "," "Petrov" ")";

Ako se to ne uzme u obzir, doći će do greške, ali da biste to izbjegli, možete je ponoviti na drugu implementaciju. Dodajte sljedeći uslov u tekst zahtjeva:

GDJE (NE & Odabir instaliran ILI DirectoryUsers.NAME IN (& dozvoljeno puno ime))

List.Parameters.SetValueParameter ("SelectionSetting", puno ime.Number ()> 0); List.Parameters.SetValueParameter ("Dozvoljeno puno ime", puno ime);

Ovdje je puno ime niz.

Kao što vidite, 2 reda koda naspram 10. Koju metodu odabrati zavisi od specifičnog problema aplikacije.

Kod 1C v 8.h DirectoryList.Select.Reset ();
ReferenceList.Full.Status.ComparisonType = ComparisonKind.Contains;
DirectoryList.Option.Status.Value = "Prihvaćeno";
ReferenceList.Option.Status.Install ();

Za 1C 8.2:
Postoji nekoliko načina da otvorite obrazac liste sa nekim unapred definisanim izborom. Razmotrimo ih redom:

1. Prvi metod je da kada otvorite obrazac, možete postaviti parametar obrasca Selection i otvoriti obrazac liste sa ovim parametrom. Parametar Selection je struktura. Imena elemenata odgovaraju nazivima polja po kojima se vrši selekcija, a vrijednosti sadrže vrijednosti selekcije. Ovo je opcija proširenja obrasca kojim se upravlja dinamičkom listom. Odnosno, postoji za obrasce čiji je glavni atribut atribut tipa Dinamička lista, na primjer, za obrasce liste i obrasce za izbor.

U procesu otvaranja obrasca biće postavljen izbor za navedeno polje.
Šifra 1C v 8.2 UE // Na primjer, u sljedećem primjeru otvara se lista računa sa izborom u polju Broj koji je jednak 333.
SelectionValue = Nova struktura ("Broj", "333");
SelectionParameters = Nova struktura ("Izbor", SelectionParameters);

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

// Na primjer, sljedeći primjer otvara listu faktura
// sa izborom za polje Counterparty jednakim OJSC Horns and Hooves.
Vrijednost odabira = Nova struktura ("Counterparty", "OJSC Horns and Hooves");
SelectionParameters = Nova struktura ("Izbor", SelectionParameters);
OpenForm ("Dokument. Račun prijema. Obrazac liste", Parametri odabira);

2. Možete otvoriti obrazac liste bez parametara:
Code 1C v 8.2 UP OpenForm ("Dokument. Račun prijema. Obrazac liste");

A zatim, u rukovatelju događaja oblika liste računa AtCreateOnServer, napišite kod koji kreira odabir u dinamičkoj listi, što je glavni atribut obrasca:
Code 1C v 8.2 UP & OnServer

SelectionElement = List.Selection.Elements.Add (Type ("DataCompositionFeedback"));
SelectionElement.LeftValue = NewDataCompositionField ("Broj");


SelectionItem.DisplayMode =DataCompositionSettingsItemDisplayMode.Nije dostupno;
SelectionItem.RightValue = "000000001";
Kraj procedure

&Na serveru
Procedura OnCreateAtServer (Neuspjeh, StandardProcessing)
PickItem = List.Choice.Elements.Add (Type
("DataCompositionOptionElement"));
SelectionElement.LeftValue = NewDataCompositionField ("DocumentSum");
SelectionItem.ComparisonView = DataCompositionComparisonView.More;
SelectionItem.Usage = Tačno;
SelectionItem.RightValue = 150000;
Kraj procedure

Prednosti ove metode su u pogledu poređenja odabir se može postaviti ne samo Jednako, kao u prvom slučaju, već i Više, Manje itd.

Ali ova metoda ima i vrlo značajan nedostatak: s ovim odabirom, obrazac će se uvijek otvoriti. Odakle je bila zvana. Stoga ovaj obrazac ne treba dodijeliti glavnom. A ako je ipak osnovno, onda je prije postavljanja odabira potrebno predvidjeti neku vrstu analize odakle se ovaj obrazac otvara. Na primjer, analizom parametara obrasca.

3. Konačno, uslov filtera se može postaviti u proizvoljan upit koji bira podatke za dinamičku listu. Na primjer, trebamo otvoriti listu računa prijema koji sadrže stavku koja je istaknuta u listi stavki.

Da biste to učinili, u obliku liste artikala kreirajte komandu i odgovarajuće dugme Prijem faktura.

Popunite obrađivač za izvršavanje ove naredbe na sljedeći način:
1C v 8.2 UP & ONCUSTOMER kod
Fakture prijema procedura (komanda)

Obrazac liste = Uzmi obrazac ("Dokument. Račun prijema. Obrazac liste");
ListForm.FilterByProduct = Items.List.CurrentString;
ListForm.Open ();

Kraj procedure

U ovom rukovatelju dobijamo formu liste računa i prosljeđujemo vezu na trenutnu stavku na listi stavki u parametar obrasca FilterByProduct i otvaramo obrazac sa ovim parametrom.

Zatim ćemo kreirati obrazac za listu dokumenata računa o prijemu i kreirati atribut obrasca Filtriraj po proizvodu, koji ćemo koristiti kao parametar obrasca kada se otvori. Sada otvorimo paletu svojstava glavnog atributa obrasca Lista. Postavite oznaku ArbitraryRequest i u redu Postavke liste kliknite Otvori.

U polje Zahtjev unesite sljedeći tekst zahtjeva:
Šifra 1C v 8.2 UP SELECT
Račun prijema dokumenta Broj,
Račun prijema dokumenta Datum
OD
Document.Incoming tovarni list AS DocumentIncoming tovarni list
GDJE
Dokument Dolazni račun.Roba.Proizvod = & Proizvod

U zahtjevu koristimo parametar Proizvod u koji će biti poslana veza na trenutni red u listi stavki sadržanih u parametru liste faktura prijema Filtriraj po proizvodu. Da biste to učinili, u rukovatelju događaja obrasca liste na otvaranju, napišite kod za postavljanje vrijednosti parametra zahtjeva za proizvod:
Kod 1C v 8.2 UP
& OnClient
Otvorena procedura (neuspjeh)

List.Parameters.SetValueParameter ("Proizvod", FilterBy Product);

Kraj procedure

Evo List.Parameters je lista parametara upita dinamičke liste za atribut List. Vrijednost parametra proizvoda postavljena je jednaka vrijednosti parametra obrasca Filtriraj po proizvodu.

Kao rezultat toga, klikom na dugme Računi prijema u obrascu liste artikala, dobićemo listu samo onih računa o prijemu koji sadrže artikl koji je trenutno odabran na listi artikala.

Da bi otvorite obrazac za odabir sa odabirom za 1s 8.2(regularni oblici), moramo izvršiti neke radnje. Mi ćemo prvi. Nakon toga ćemo postaviti odabir i programski ga otvoriti, evo primjera koda:

Izbor na obrascu u polju za unos 1C 8.2 sa više vrednosti

U primjeru iznad, pogledali smo kako podesiti odabir na obrascu za odabir za određenu vrijednost. Sada razmotrimo situaciju kada trebate zamijeniti nekoliko vrijednosti, to može biti, na primjer, i niz i istovar iz rezultata upita. Ovo je izbor u polju za unos 1c sa višestrukim značenjima.

Za početak dobijamo obrazac za odabir, u parametrima prosljeđujemo "Element" (vlasnik), postavljamo zastavicu načina odabira. Zatim kreiramo listu vrijednosti i niz, imajte na umu da kao odabir, kada je tip poređenja postavljen na listi, objekt može biti prisutan samo sa tipom Lista vrijednosti... Dodamo elemente nizu, a zatim učitavamo ovaj niz u Listu vrijednosti, koju naknadno postavljamo u selekciji. Takođe, ne zaboravite da omogućite zastavicu za korišćenje ove selekcije i postavite prikaz poređenja.

Postavljanje odabira u polje za unos na obrascu u 1C 8.3, događaj StartSelection

Sada razmislite izbor u polju za unos na kontrolisanom obrascu u 1C 8.3... Pronađimo na obrascu element koji nas zanima, u koji ćemo postaviti selekciju, u našem slučaju to je polje "Organizacija". Pronađemo događaj "Odaberi početak", kliknemo na lupu i nađemo se u proceduri. Vidimo parametar ChoiceData, ovaj parametar je tipa ValuesList. Da bismo ograničili izbor na tražene elemente, potrebno je popuniti Listu vrijednosti. Elemente možemo odabrati samo na serveru, tako da kreiramo proceduru sa & OnServer direktivom kompilacije. U ovoj proceduri popunjavamo podatke o izboru.

Top srodni članci