Do otwórz formularz selekcji z selekcją w 1s 8.2 (regularne formy), musimy wykonać pewne czynności. Dostaniemy to pierwsi. Następnie ustawimy wybór i otworzymy go programowo, oto przykładowy kod:

Wybór w formularzu w polu wprowadzania 1C 8.2 z kilkoma wartościami

W powyższym przykładzie rozważyliśmy jak ustawić zaznaczenie na formularzu wyboru według określonej wartości. Przyjrzyjmy się teraz sytuacji, w której trzeba podstawić kilka wartości, na przykład może to być zarówno tablica, jak i wyładowanie z wyniku zapytania. To jest wybór w polu wprowadzania 1s o wielu znaczeniach.

Najpierw otrzymujemy formularz wyboru, przekazujemy „Element” (właściciel) w parametrach, ustawiamy flagę trybu wyboru. Następnie tworzymy listę wartości i tablicę, zauważamy, że jako wybór przy ustawionym typie porównania na liście, może być tylko obiekt z typem Lista wartości. Dodajemy elementy do tablicy, następnie ładujemy tę tablicę do Listy wartości, którą w efekcie ustawiamy w zaznaczeniu. Nie zapomnij również włączyć flagi do korzystania z tego wyboru i ustawić typ porównania.

Ustawienie wyboru w polu wejściowym w formularzu w 1C 8.3, zdarzenie StartChoice

Teraz rozważ wybór w polu wejściowym w zarządzanym formularzu w 1C 8.3. Znajdźmy na formularzu interesujący nas element, w którym ustawimy selekcję, w naszym przypadku jest to pole „Organizacja”. Znajdujemy zdarzenie „StartChoice”, klikamy na lupę i znajdujemy się w procedurze. Widzimy parametr ChoiceData, ten parametr jest typu ValueList. Aby ograniczyć wybór do niezbędnych elementów, musimy wypełnić Listę wartości. Możemy zaznaczać elementy tylko na serwerze, dlatego tworzymy procedurę z dyrektywą kompilacji &AtServer. W tej procedurze wypełniamy dane wyboru.

Pełna składnia (kliknij, aby rozwinąć)

Lista wartości

Opis:

Lista wartości to obiekt, który nie jest przechowywany w bazie danych, co pozwala na budowanie dynamicznych zestawów wartości do rozwiązywania problemów interfejsu i manipulowanie nimi (dodawanie, edycja, usuwanie elementów, sortowanie). Może być wypełniony wartościami dowolnego typu, tj. na jednej liście rodzaje przechowywanych wartości mogą być różne. Jednym z przykładów wykorzystania tego obiektu jest zorganizowanie wyboru konkretnego dokumentu z listy możliwych dokumentów wygenerowanych przez złożony algorytm.

Elementy kolekcji: Wartości listy przedmiotów

Możliwe jest przechodzenie przez kolekcję dla obiektu za pomocą operatora Dla każdego ... Od ... Cykl. Traversal wybiera elementy kolekcji.

Dostęp do elementu kolekcji można uzyskać za pomocą operatora [...]. Indeks elementu jest przekazywany jako argument ( numeracja od 0).

Nieruchomości:

Metody:

Wstaw (indeks, wartość, widok, znacznik, obraz) Wstawia nowy element do listy wartości na pozycji o określonym indeksie.SelectElement(Title, Element) Wywołuje okno dla wybór interaktywny jeden z elementów na liście wartości. Element- element, na którym podczas interaktywnego wyboru powinna być początkowo umieszczona lista wartości. Jeżeli wartość parametru nie jest elementem listy wartości znajdujących się na tej liście, pozycjonowanie nie nastąpi.Prześlij wartości() Tworzy tablicę i kopiuje do niej wartości elementów listy wartości.Add(Value, View, Markup, Image) Dodaje nowy element na końcu listy wartości.Pobierz Wartości(Array of Values) Ładuje listę wartości z wartościami z przekazanej tablicy. W takim przypadku wszystkie poprzednie elementy listy są usuwane.Wypełnij notatki(Etykieta) Ustawia etykietę dla wszystkich elementów listy wartości.Indeks (element) Pobiera indeks elementu na liście wartości. Jeśli nie zostanie znaleziony, zwracane jest -1.count() Pobiera liczbę elementów listy wartości.Znajdź według wartości(LookupValue) Wyszukuje wartość elementu z listy wartości. Jeśli żaden element nie przechowuje wartości równej żądanej wartości, zwracana jest wartość. Nieokreślony. Znajdź według ID(ID) Pobiera element listy wartości według ID. Jeśli element nie zostanie znaleziony, to zwraca Nieokreślony. Zaznacz przedmioty(Title) Zaznacza lub odznacza (interaktywnie) pozycje na liście wartości. zwroty Prawdziwe jeśli w oknie dialogowym zostanie naciśnięty przycisk „OK”, Kłamstwo- Inaczej.Clear() Czyści listę wartości, usuwając z niej wszystkie elementy.PokażWybórPozycji(ClosingAlertDescription, Title, Item) Wywołuje okno w celu interaktywnego wybrania jednego z elementów na liście wartości.PokażMarkItems(DescriptionNotificationsOnClosing, Header)Przeznaczony do interaktywnego ustawiania stanów flag dla elementów listy wartości.Get(Index) Pobiera wartość z indeksu. Działa podobnie do operatora.Przenieś (Pozycja, Przesunięcie) Przesuwa element listy wartości do przodu lub do tyłu o określoną liczbę pozycji.Copy() Tworzy kopię listy wartości.Sortuj według wartości(Kierunek) Sortuje listę wartości w porządku rosnącym lub malejącym według wartości przechowywanych przez elementy. Zobacz przykład poniżej.Sortuj według widoku(Kierunek) Sortuje listę wartości w rosnącej lub malejącej kolejności alfabetycznej reprezentacji wartości składowych na liście. Zobacz przykład poniżej.Usuń (Element) Usuwa element z listy wartości gdzie Element- indeks elementu do usunięcia lub sam element.

Konstruktorzy:

Nowa lista wartości
Procedura &OnClient Kod wykonawczy (polecenie) /// Jak stworzyć listę wartości w 1s 8.3, 8.2 Lista = Nowa lista wartości; /// Jak dodać element do listy wartości w 1s 8.3, 8.2 // dodaj parametry metody:// - oznaczający // - wydajność // - znak (opcjonalnie) // - obrazek (wymagane) Lista. Dodaj( 1980 , // wartość elementu „Rok urodzin Wasyi”// wydajność ) ; Lista. Dodaj(1985 , „Urodziny Julii”) ; // wartości mogą być różne rodzaje Lista. Add("Polina" , "Imię dziecka" ) ; /// Jak wstawić element do listy wartości w 1s 8.3, 8.2 // wstaw na pozycji #2 (elementy są numerowane od 0) // element z wartością 2010 i reprezentacją // „Rok urodzenia ich wspólnej córki” Lista. Wklej(2 , 2010 , „Rok urodzenia ich wspólnej córki”) ; /// Jak ominąć elementy listy wartości w 1s 8.3, 8.2 Dla każdego elementu z listy Raport pętli( Element. Widok + ",": " + Ciąg(Element. Wartość) ); Zakończ cykl ; /// Jak wyczyścić listę wartości w 1s 8,3, 8,2 Lista. Jasne() ; Lista. Dodaj("Poniedziałek" ); Lista. Add("wtorek" ); Lista. Add("środa" ); /// Jak sprawdzić liczbę elementów listy wartości, a także /// pobierz element listy według jego indeksu w 1s 8.3, 8.2 // numeracja od zera Dla indeksu = 0 według listy. Quantity() - 1 Raport pętli (Lista[Indeks] ) ; Zakończ cykl ; /// Jak znaleźć element listy według jego wartości w 1s 8.3, 8.2 WartośćWtorek = Lista. FindByValue("wtorek" ) ; /// Jak znaleźć indeks elementu na liście w 1s 8.3, 8.2 Raport(Lista.Indeks(WartośćWtorek) ) ; // 1, ponieważ numeracja jest od zera /// Jak posortować listę według jej wartości w 1s 8,3, 8,2 // było: poniedziałek, wtorek, środa Lista. SortByValue(SortingDirection. Malejąco) ; // stało się: środa, poniedziałek, wtorek /// Jak usunąć element z listy wartości w 1s 8.3, 8.2 // usuń pierwszy element // parametr: element listy // lub indeks elementu// możesz zrobić tę listę. Usuń(Lista[ 0 ] ) ; // lub tak // List.Delete(0); /// Jak przesunąć element listy wartości w 1s 8,3, 8,2 // przesuń element zerowy o jedną pozycję do przodu // było: poniedziałek wtorek Lista. Przenieś(0 , 1 ) ; // stał się: wtorek poniedziałek /// Jak zrobić kopię listy w 1s 8 ListCopy = Lista. Kopiuj() ; Kolory = Nowa lista wartości; Zabarwienie. Dodaj("Czerwony" ); Zabarwienie. Dodaj("Zielony" ); Zabarwienie. Dodaj("Niebieski" ); /// Jak wyładować wartości listy do tablicy w 1s 8.3, 8.2 ArrayColors = Kolory. RozładujWartości(); /// Jak załadować wartości listy z tablicy w 1s 8.3, 8.2 Zabarwienie. LoadValues(ArrayColors) ; Koniec procedury /// Jak dokonać niemodalnego wyboru wartości z listy /// wartości w 1s 8,3, 8,2 Procedura &OnClient How toMakeModalSelectValue(Command) Colors = New ValueList; Zabarwienie. Dodaj("Czerwony" ); Zabarwienie. Dodaj("Zielony" ); Zabarwienie. Dodaj("Niebieski" ); // procedura AfterItemSelect jest zdefiniowana tuż poniżej AlertAfterItemSelection = Nowy opis alertu ( „Po wybraniu elementu”, TenObiekt); Zabarwienie. ShowItemChoice (AlertPoWyborzePrzedmiotu, "Wybierz swój ulubiony kolor") ; EndProcedure &AtClient Procedura AfterElementSelection(Element, Parametry) Eksportuj If Element<>Niezdefiniowany Następnie Raport(Pozycja.Wartość) ; EndIf ; Koniec procedury /// Jak zrobić niemodalny znak wartości z listy? /// wartości w 1s 8,3, 8,2 Procedura &OnClient How toMakeModalValueMark(Command) Colors = New ValueList; Zabarwienie. Dodaj("Czerwony" ); Zabarwienie. Dodaj("Zielony" ); Zabarwienie. Dodaj("Niebieski" ); // procedura AfterMarkingItems jest zdefiniowana tuż poniżej AlertAfterMarkItems = Nowy opis alertu ( „Po Oznaczeniu Przedmiotów”, TenObiekt); Zabarwienie. ShowItemMark( NotificationAfterItemMark, "Wybierz swoje ulubione kolory") ; Zabarwienie. Wypełnij Uwagi (Prawda) ; EndProcedure &OnClient Procedura AfterMarkingElements(Elements, Parameters) Export If Elements<>Niezdefiniowany następnie dla każdego koloru z pętli elementów, jeśli kolor. Zgłoś następnie Zgłoś (Kolor. Wartość) ; EndIf ; Zakończ cykl ; EndIf ; Koniec procedury /// Jak dokonać modalnego wyboru wartości z listy w 1s 8.3, 8.2&U klienta Procedura How toMakeModalSelectValue(Command) Colors = New ValueList; Zabarwienie. Dodaj("Czerwony" ); Zabarwienie. Dodaj("Zielony" ); Zabarwienie. Dodaj("Niebieski" ); Wybierz Kolor = Kolory. Wybierz przedmiot( "Wybierz swój ulubiony kolor") ; Jeśli wybrałeś kolor<>Niezdefiniowany Następnie Raport(WybierzKolor.Wartość) ; EndIf ; Koniec procedury /// Jak zrobić modalny znak wartości z listy? /// wartości w 1s 8,3, 8,2 Procedura &OnClient How toMakeModalValueMark(Command) Colors = New ValueList; Zabarwienie. Dodaj("Czerwony" ); Zabarwienie. Dodaj("Zielony" ); Zabarwienie. Dodaj("Niebieski" ); Jeśli kolory. Zaznacz przedmioty( "Wybierz swoje ulubione kolory") Następnie dla każdego koloru z cyklu kolorów, jeśli kolor. Zgłoś następnie Zgłoś (Kolor. Wartość) ; EndIf ; Zakończ cykl ; EndIf ; // i tak możesz ustawić wszystkie oznaczenia na raz // lista do określonej wartości Zabarwienie. Wypełnij Uwagi (Prawda) ; Koniec procedury /// Pobierz i uruchom te przykłady na komputerze

Bardzo często w formularzu konieczne jest umożliwienie użytkownikowi wybrania ustawień w formularzu (przed kliknięciem przycisku „Uruchom wszystko”). Gdy musisz wybrać jedną wartość z kilku predefiniowanych, często używana jest rozwijana lista wartości 1C w formularzu.

Rozwijana lista wartości 1C w formularzu - dodaj pole wyboru do grubego formularza klienta, podaj jego nazwę. Aby uniemożliwić użytkownikowi modyfikowanie listy, odznacz opcję „Edycja tekstu” we właściwościach pola wyboru.

Samą listę wyboru dodamy programowo w module obsługi formularza „Przy otwieraniu”. W polu wyboru znajduje się podlista wartości FormElements.SelectionFieldName.SelectionList oraz do ustawienia wartości domyślnej i określenia wybranej wartości FormElements.SelectionFieldName.Value:
Procedura OnOpen()

FormElements.ChoiceValues.ChoiceList.Clear();
FormElements.ChoiceValues.ChoiceList.Add(0, "Utwórz dokument");
FormElements.ChoiceValues.ChoiceList.Add(1, "Zmień dokument");
FormElements.ChoiceValues.ChoiceList.Add(2, "Usuń dokument");
FormElements.SelectValues.Value = 0;

Koniec procedury

Rozwijana lista wartości 1C na formularzu - in cienki klient na formularzu należy utworzyć atrybut formularza, w którym będziemy przechowywać wynik np. z typem string. Przeciągnij go na formularz.
Rozwijana lista wartości 1C w formularzu - Opcja 1)

  • Włącz przycisk wyboru listy
  • We właściwości „Lista wyboru” kliknij „...” i wprowadź opcje
  • Wynik wyboru zostanie zapisany w wybranym atrybucie


Rozwijana lista wartości 1C w formularzu - Opcja 2)

  • Włącz przycisk wyboru listy
  • Dodaj program obsługi „Początek SelectionFromList”

&Na kliencie
Procedura SelectedValueStartSelectionFromList(Element, StandardProcessing)

Elements.SelectedValue.SelectionList.Add("Dodaj dokument");
Elements.SelectedValue.SelectionList.Add("Edytuj dokument");
Elements.SelectedValue.SelectionList.Add("Usuń dokument");

Koniec procedury

Wynik jest podobny. Wymagane, jeśli lista powinna być wypełniona odniesieniami do katalogów/dokumentów, które nie są predefiniowane.

Rozwijana lista wartości 1C w formularzu - Opcja 3)

Ta opcja działa podobnie, ale interfejs wygląda inaczej.