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 podľa konkrétnej hodnoty. Teraz uvažujme o situácii, keď potrebujete nahradiť niekoľko hodnôt, napríklad to môže byť pole aj uvoľnenie z výsledku dotazu. Toto je výber vo vstupnom poli 1s s viacerými významami.

Najprv získame výberový formulár, 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ť iba objekt s typom Zoznam hodnôt. Do poľa pridáme prvky, toto pole potom načítame do Zoznamu hodnôt, ktorý vo výsledku 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 na riadenom formulári 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.

Úplná syntax (kliknutím rozbalíte)

Zoznam hodnôt

Popis:

Zoznam hodnôt je objekt, ktorý nie je uložený v databáze, čo vám umožňuje vytvárať dynamické sady hodnôt na riešenie problémov s rozhraním a manipulovať s nimi (pridávať, upravovať, mazať prvky, triediť). Môže byť naplnený hodnotami akéhokoľvek typu, t.j. v jednom zozname môžu byť typy uložených hodnôt rôzne. Jedným príkladom použitia tohto objektu je organizovanie výberu konkrétneho dokumentu zo zoznamu možných dokumentov generovaných zložitým algoritmom.

Prvky kolekcie: ItemListValues

Kolekciou objektu je možné prejsť pomocou operátora Pre každý ... Od ... Cyklus. Priechod vyberá prvky kolekcie.

K prvku kolekcie je možné pristupovať pomocou operátora [...]. Index prvku sa odovzdá ako argument ( číslovanie od 0).

Vlastnosti:

Metódy:

Insert(Index, Value, View, Markup, Image) Inserts nový prvok do zoznamu hodnôt na pozícii so zadaným indexom.SelectElement(Title, Element) Vyvolá okno pre interaktívny výber jeden z prvkov v zozname hodnôt. Prvok- prvok, na ktorý by mal byť pri interaktívnom výbere spočiatku umiestnený zoznam hodnôt. Ak hodnota parametra nie je prvkom zoznamu hodnôt obsiahnutých v tomto zozname, k umiestneniu nedôjde.UploadValues()Vytvorí pole a skopíruje do neho hodnoty prvkov zoznamu hodnôt.Add(Value, View, Markup, Image) Pridá nový prvok na koniec zoznamu hodnôt.DownloadValues(Pole hodnôt) Načíta zoznam hodnôt s hodnotami z odovzdaného poľa. V tomto prípade sa vymažú všetky predchádzajúce prvky zoznamu.Vyplňte Poznámky(Label) Nastaví označenie pre všetky prvky zoznamu hodnôt.Index (Element) Získa index prvku v zozname hodnôt. Ak sa nenájde, vráti sa -1.count() Získa počet prvkov zoznamu hodnôt.FindByValue(LookupValue) Vyhľadá hodnotu prvku v zozname hodnôt. Ak žiadny prvok neuchováva hodnotu rovnajúcu sa požadovanej hodnote, hodnota sa vráti. Nedefinované. FindByID(ID) Získa prvok zoznamu hodnôt podľa ID. Ak sa prvok nenájde, vráti sa Nedefinované. Označiť položky(Title) Začiarkne alebo zruší (interaktívne) položky v zozname hodnôt. sa vracia Pravda ak v dialógovom okne stlačíte tlačidlo "OK", Klamať- inak.Clear() Vymaže zoznam hodnôt odstránením všetkých prvkov z neho.ShowItemSelection(ClosingAlertDescription, Title, Item) Vyvolá okno na interaktívny výber jednej z položiek v zozname hodnôt.ShowMarkItems(DescriptionAlertOnClosing, Header) Navrhnuté pre interaktívne nastavenie vlajkových stavov pre prvky zoznamu hodnôt.Get(Index) Získa hodnotu v indexe. Funguje podobne ako operátor.Presunúť (Položka, Posun) Presunie prvok zoznamu hodnôt dopredu alebo dozadu o zadaný počet pozícií.Copy() Vytvorí kópiu zoznamu hodnôt.SortByValue(Smer) Zoradí zoznam hodnôt vo vzostupnom alebo zostupnom poradí podľa hodnôt uložených prvkami. Pozrite si príklad nižšie.Zoradiť podľa zobrazenia(Smer) Zoradí zoznam hodnôt vo vzostupnom alebo zostupnom abecednom poradí podľa reprezentácií hodnôt členov v zozname. Pozrite si príklad nižšie.Remove (Element) Odstráni prvok zo zoznamu hodnôt, kde Prvok- index prvku, ktorý sa má odstrániť, alebo samotného prvku.

Konštruktéri:

Nový zoznam hodnôt
&OnClient Procedure ExecuteCode(príkaz) /// Ako vytvoriť zoznam hodnôt v 1s 8.3, 8.2 Zoznam = Nový zoznam hodnôt; /// Ako pridať prvok do zoznamu hodnôt v 1s 8.3, 8.2 // pridanie parametrov metódy:// - význam // - výkon // - značka (voliteľné) // - obrázok (povinné) Zoznam. Pridať ( 1980 , // hodnota prvku "Rok Vasyovho narodenia"// výkon ); Zoznam. Pridať(1985, "Júliine narodeniny") ; // hodnoty môžu byť odlišné typy Zoznam. Add("Polina" , "Meno dieťaťa" ); /// Ako vložiť prvok do zoznamu hodnôt v 1s 8.3, 8.2 // vložiť na pozíciu #2 (prvky sú číslované od 0) // prvok s hodnotou 2010 a reprezentáciou // "Rok narodenia ich spoločnej dcéry" Zoznam. Vložiť(2, 2010, "Rok narodenia ich spoločnej dcéry") ; /// Ako obísť prvky zoznamu hodnôt v 1s 8.3, 8.2 Pre každý prvok zo zoznamu Správa slučky( Element. View + ": " + String(Element. Value) ); EndCycle ; /// Ako vymazať zoznam hodnôt v 1s 8.3, 8.2 Zoznam. Jasný() ; Zoznam. Add("pondelok" ); Zoznam. Pridať("utorok" ); Zoznam. Add("Streda" ); /// Ako zistiť počet prvkov zoznamu hodnôt a tiež /// získa prvok zoznamu podľa jeho indexu v 1s 8.3, 8.2 // číslovanie od nuly Pre Index = 0 Podľa zoznamu. Quantity() - 1 Loop Report(Zoznam[Index] ) ; EndCycle ; /// Ako nájsť prvok zoznamu podľa jeho hodnoty v 1s 8.3, 8.2 ValueTuesday = Zoznam. FindByValue("utorok" ) ; /// Ako zistiť index prvku v zozname v 1s 8.3, 8.2 Report(List. Index(HodnotaUtorok) ) ; // 1, pretože číslovanie je od nuly /// Ako zoradiť zoznam podľa jeho hodnôt v 1s 8.3, 8.2 // bolo: pondelok, utorok, streda Zoznam. SortByValue(SortingDirection. Zostupne) ; // sa stali: streda, pondelok, utorok /// Ako odstrániť prvok zo zoznamu hodnôt v 1s 8.3, 8.2 // odstráňte prvý prvok // parameter: prvok zoznamu // alebo index prvku// môžete urobiť tento zoznam. Delete(Zoznam[ 0] ) ; // alebo tak // List.Delete(0); /// Ako posunúť prvok zoznamu hodnôt v 1s 8.3, 8.2 // posun nulového prvku o jednu pozíciu dopredu // bolo: pondelok utorok Zoznam. Move(0 , 1 ) ; // stal sa: utorok pondelok /// Ako vytvoriť kópiu zoznamu za 1s 8 ListCopy = Zoznam. Copy() ; Farby = Nový zoznam hodnôt; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); /// Ako uvoľniť hodnoty zoznamu do poľa v 1s 8.3, 8.2 ArrayColors = Farby. UnloadValues() ; /// Ako načítať hodnoty zoznamu z poľa v 1s 8.3, 8.2 Farby. LoadValues(ArrayColors) ; EndProcedure /// Ako urobiť nemodálny výber hodnoty zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Procedúra OnClient How toMakeModalSelectValue(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); // postup AfterItemSelect je definovaný nižšie AlertAfterItemSelection = New AlertDescription( "AfterElementSelection", ThisObject ); Farby. ShowItemChoice( AlertAfterItemChoice, "Vyberte si svoju obľúbenú farbu"); EndProcedure &AtClient Procedure AfterElementSelection(Element, Parameters) Export If Element<>Undefined Then Report(Item. Value) ; Koniec Ak ; EndProcedure /// Ako vytvoriť nemodálnu značku hodnôt zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Procedúra OnClient How toMakeModalValueMark(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); // postup AfterMarkingItems je definovaný nižšie AlertAfterMarkItems = New AlertDescription( "Po označovaní položiek", ThisObject ); Farby. ShowItemMark( NotificationAfterItemMark, "Vyberte si svoje obľúbené farby"); Farby. FillRemarks(True) ; EndProcedure &OnClient Procedure AfterMarkingElements(Elements, Parameters) Export If Elements<>Nedefinované potom pre každú farbu z prvkov slučka, ak farba. Príznak Potom správa (Hodnota farby) ; Koniec Ak ; EndCycle ; Koniec Ak ; EndProcedure /// Ako urobiť modálny výber hodnoty zo zoznamu v 1s 8.3, 8.2&Na procedúre klienta How toMakeModalSelectValue(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); SelectColor = Farby. Vybrať položku( "Vyberte si svoju obľúbenú farbu"); Ak vyberiete farbu<>Undefined Then Report(SelectColor. Value) ; Koniec Ak ; EndProcedure /// Ako vytvoriť modálnu značku hodnôt zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Procedúra OnClient How toMakeModalValueMark(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); Ak farby. Označiť položky ( "Vyberte si svoje obľúbené farby") Potom pre každú farbu z farebného cyklu Ak farba. Príznak Potom správa (Hodnota farby) ; Koniec Ak ; EndCycle ; Koniec Ak ; // a takto sa dajú nastaviť všetky značky naraz // zoznam na konkrétnu hodnotu Farby. FillRemarks(True) ; EndProcedure /// Stiahnite si a spustite tieto príklady na počítači

Veľmi často je potrebné vo formulári umožniť používateľovi vybrať nastavenia vo formulári (pred kliknutím na tlačidlo „Spustiť všetko“). Keď potrebujete vybrať jednu hodnotu z niekoľkých preddefinovaných, často sa používa rozbaľovací zoznam hodnôt 1C vo formulári.

Rozbaľovací zoznam hodnôt 1C vo formulári - pridajte pole výberu do hrubého formulára klienta, zadajte jeho názov. Ak chcete zabrániť používateľovi upravovať zoznam, zrušte začiarknutie políčka „Úprava textu“ vo vlastnostiach poľa výberu.

Samotný výberový zoznam pridáme programovo v handleri formulára "Pri otvorení". Pole výberu obsahuje podzoznam hodnôt FormElements.SelectionFieldName.SelectionList a na nastavenie predvolenej hodnoty a na určenie vybranej hodnoty FormElements.SelectionFieldName.Value:
Postup OnOpen()

FormElements.ChoiceValues.ChoiceList.Clear();
FormElements.ChoiceValues.ChoiceList.Add(0, "Vytvoriť dokument");
FormElements.ChoiceValues.ChoiceList.Add(1, "Zmeniť dokument");
FormElements.ChoiceValues.ChoiceList.Add(2, "Vymazať dokument");
FormElements.SelectValues.Value = 0;

EndProcedure

Rozbaľovací zoznam hodnôt 1C vo formulári - v tenkého klienta na formulári je potrebné vytvoriť atribút formulára, do ktorého uložíme výsledok napríklad s typom reťazca. Pretiahnite ho do formulára.
Rozbaľovací zoznam hodnôt 1C vo formulári - Možnosť 1)

  • Povoliť tlačidlo výberu zoznamu
  • Vo vlastnosti "Zoznam výberu" kliknite na "..." a zadajte možnosti
  • Výsledok výberu sa uloží do vybratého atribútu


Rozbaľovací zoznam hodnôt 1C vo formulári - Možnosť 2)

  • Povoliť tlačidlo výberu zoznamu
  • Pridať obslužný program "Začiatok SelectionFromList"

&AtClient
Postup SelectedValueStartSelectionFromList(Element, StandardProcessing)

Elements.SelectedValue.SelectionList.Add("Pridať dokument");
Elements.SelectedValue.SelectionList.Add("Upraviť dokument");
Elements.SelectedValue.SelectionList.Add("Odstrániť dokument");

EndProcedure

Výsledok je podobný. Vyžaduje sa, ak má byť zoznam naplnený odkazmi na adresáre/dokumenty, ktoré nie sú preddefinované.

Rozbaľovací zoznam hodnôt 1C vo formulári - Možnosť 3)

Táto možnosť funguje podobne, ale rozhranie vyzerá inak.