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:
Konštruktéri:
&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.