Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • U kontaktu sa
  • 1c odabir u obrascu za odabir. Kako otvoriti obrazac liste sa nekim odabirom? TypeArray = Novi niz

1c odabir u obrascu za odabir. Kako otvoriti obrazac liste sa nekim odabirom? TypeArray = Novi niz

Programsko otvaranje obrazaca u upravljanoj 1C aplikaciji značajno se razlikuje od otvaranja u običnoj aplikaciji. Pogledajmo prvo staru metodu. Sastoji se od primanja obrasca i njegovog otvaranja u normalnom ili modalnom načinu (kada se otvori u modalnom načinu, obrazac blokira program).

GetForm() . otvori()

Ovo je najsporiji način otvaranja formulara. Međutim, omogućava vam da programski obradite obrazac prije nego što ga otvorite. Za obradu koda potrebno je malo promijeniti:

Forma = GetForm( "Dokument. Prijem robe i usluga. Obrazac dokumenta") ;
//Ovdje izvodimo radnje sa formom
Forma. Open();

Treba uzeti u obzir da će se prilikom prijema obrasca izvršiti još jedna procedura događaja WhenCreatedOnServer.

Pogledajmo druge metode koje vam omogućuju brže i praktičnije otvaranje obrazaca u upravljanoj 1C aplikaciji. U zavisnosti od specifične situacije, mogu se koristiti različite metode.

1. Kako otvoriti obrazac objekta u upravljanoj aplikaciji ako postoji veza do njega.

U ovom slučaju sve je krajnje jednostavno.

RefLink = Direktoriji. Nomenklatura. FindByCode("000000001" ) ;
OpenValue(RefLink) ;

2. Kako otvoriti obrazac za odabir i zatim dobiti odabranu vrijednost.

Za to postoji funkcija EnterValue(). Funkcija ima 3 parametra:

  • Varijabla u koju će odabrana vrijednost biti upisana;
  • Savjet koji će biti prikazan u prozoru za odabir;
  • Opis tipova odabranih vrijednosti. Može biti nekoliko tipova, a u tom slučaju od vas će biti zatraženo da odaberete tip prije odabira određene vrijednosti.

Kao rezultat izvršavanja funkcije, otvorit će se zadani obrazac za odabir objekta navedenog tipa.

Varijabilna vrijednost;
Niz= novi niz;
Niz. Dodaj (Tip( "DirectoryLink.Nomenklatura") ) ;
Niz. Dodaj (Tip( "DirectoryLink. Counterparties") ) ;

TypeDescription= new TypeDescription(Niz) ;

Res = EnterValue(Vrijednost, "Hint" , TypeDescription) ;

Prethodne metode su vam dozvoljavale samo da otvorite zadane obrasce za objekte (objekti ili obrazac za odabir). Ako trebate otvoriti prilagođeni obrazac, možete koristiti funkciju OpenForm().

Ova funkcija ima dosta parametara. Pogledajmo neke od njih:

  • Ime obrasca— ovdje možete odabrati bilo koji od standardnih oblika objekta, na primjer, Obrazac za odabir ili List Form. Ili određeni obrazac kreiran od strane programera.
  • Opcije— omogućava vam da ga prenesete u obrazac u obrascu strukture neke parametre prije otvaranja, čime se određuju izlazni podaci. Parametri mogu biti bilo koji podatak koji se može proslijediti od klijenta do servera. Parametri proslijeđeni prilikom otvaranja obrasca mogu se obraditi u proceduri WhenCreatingOnServer() na obrascu koji se otvara.
  • Način otvaranja obrasca— ima 3 opcije: neovisno, blokiranje cijelog sučelja, blokiranje obrasca vlasnika.

Pogledajmo kako se funkcija koristi OpenForm() u raznim situacijama.

3. Kako otvoriti formu postojećeg objekta

Svaki obrazac ima jedan ključni atribut. Istaknut je podebljanim slovima na listi detalja obrasca i obično se zove Objekt u obliku elemenata priručnika i dokumenata. Drugi objekti mogu imati drugačije ime. Da biste otvorili obrazac postojećeg objekta, potrebno je da prosledite parametar obrascu koji se otvara Ključ sa vrijednošću kao referencom na objekt.

&OnClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Key" , FindC() ) ;
OpenForm(, Parametar) ;
Kraj procedure

&Na serveru
Funkcija FindC();
Vrati imenike. Counterparties. FindByRequisites ("TIN", "745107734623")
EndFunction

4. Kako otvoriti novi obrazac za objekt

Ovdje će poslužiti jednostavna funkcija OpenForm() bez ikakvih parametara.

&OnClient
Procedura Naredba1 (Naredba)
OpenForm( "Imenik. Ugovorne strane. Obrazac objekta") ;
Kraj procedure

5. Kako otvoriti obrazac za novi objekt i popuniti ga na osnovu nečega

Morate proslijediti parametar Baza, čija će vrijednost biti referenca na osnovni objekt punjenja. Ovo će započeti postupak ProcessFill().

&OnClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Baza", LinkToBuyerAccount) ;
OpenForm( "Dokument. Prodaja roba i usluga. Obrazac predmeta", Parametar) ;
Kraj procedure

Ovaj primjer će kreirati dokument Prodaja robe i usluga i popunjena na osnovu fakture za plaćanje kupcu, link na koji je proslijeđen.

6. Kako otvoriti obrazac i postaviti odabir na njemu

Izbor na 1C obrascima može biti jednostavan ili složen. Jednostavan odabir uključuje izraze poput Organizacija = Horns and Hooves LLC. Složena selekcija uključuje druge vrste poređenja, npr. Na listi. U ovom članku ćemo razmotriti organizaciju jednostavne selekcije, a poseban članak će biti posvećen složenoj selekciji.

Da biste organizirali jednostavnu selekciju, trebate proslijediti parametar s ključem u obrazac koji se otvara Odabir, vrijednost će biti struktura u kojoj je ključ ime polja dinamičke liste, a vrijednost su podaci koji se traže.

Na primjer, otvorimo obrazac za listu imenika GTD brojevi i napravite odabir tamo od strane vlasnika - elementa direktorija Nomenklatura.

&OnClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;

Izbor= nova struktura;
Odabir. Insert("Vlasnik", LinkToNomenclature) ;

Parametar. Insert("Izbor", Odabir) ;

OpenForm( "Imenik.GTD brojevi. Formular liste", Parametar) ;
Kraj procedure

7. Kako otvoriti obrazac za unos u registar informacija

Da biste to učinili, trebat će vam ključ za unos u registar informacija.

Ključ za snimanje— to su vrijednosti svih mjerenja i perioda (ako je registar periodičan). Odnosno, ključ zapisa je parametri pomoću kojih se zapis može jedinstveno identificirati.

Algoritam otvaranja je sljedeći:

  1. U strukturu unosimo podatke ključa zapisa sa potrebnim vrijednostima.
  2. Dobivenu strukturu postavljamo u niz.
  3. Kreiramo ključ zapisa iz niza.
  4. Prosljeđujemo parametar u obrazac koji se otvara Ključ sa ključem za snimanje iz koraka 3 kao vrijednosti.

&OnClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;

KeyParameters= nova struktura;
Ključni parametri. Insert("Nomenklatura", LinkToNomenklatura) ;
Ključni parametri. Insert("PriceType", LinkToPriceType) ;
Ključni parametri. Insert("Period", Datum) ;

KeyArray = Novi niz;
KeyArray. Add(KeyParameters) ;

EntryKey = Novo( "Registar informacija Ključ za evidenciju. CijeneNomenklatura", KeyArray) ;

Parametar. Insert("Key", RecordKey) ;

OpenForm( "Registar informacija. Cijene nomenklature. Obrazac evidencije", Parametar) ;
Kraj procedure

Kako otvoriti obrazac liste sa nekim odabirom?

Postoji nekoliko načina da otvorite obrazac liste s nekim unaprijed postavljenim odabirom. Pogledajmo ih redom:

1. Prvi način je da prilikom otvaranja obrasca možete podesiti parametar obrasca za odabir i otvoriti obrazac liste sa ovim parametrom. Parametar Selection predstavlja strukturu. Imena elemenata odgovaraju nazivima polja po kojima se vrši selekcija, a vrijednosti sadrže vrijednosti odabira. Ovo je opcija proširenja obrasca kojim se upravlja dinamičkom listom. Odnosno, postoji za forme čiji je glavni atribut atribut tipa Dynamic List, kao što su obrasci liste i obrasci za izbor.

Prilikom otvaranja obrasca, odabir će se vršiti na osnovu navedenog polja. Na primjer, u sljedećem primjeru otvara se lista faktura sa izborom u polju Broj, jednakom 333.

Vrijednost odabira = Nova struktura("Broj", "333");

SelectionParameters = Nova struktura("Izbor", SelectionValue);

OpenForm("Dokument. Račun prijema. Obrazac liste", Opcije odabira);

2. Možete otvoriti obrazac liste bez parametara:

OpenForm("Document.Invoice.ListForm");

A zatim, u obrascu liste faktura u rukovaocu događaja Kada je CreatedOnServer napisati kod koji kreira selekciju u dinamičkoj listi, što je glavni atribut forme:

&Na serveru

Procedura prilikom kreiranja na serveru (neuspjeh, standardna obrada)

Element odabira = List.Selection.Elements.Add(Type("DataComposition Selection Element"));

SelectionElement.LeftValue = NewDataCompositionField("Broj");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = Tačno;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

Kraj procedure

Prednosti ove metode su da se tip poređenja za odabir 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 označiti kao glavni. A ako je ipak glavni, onda je prije instaliranja selekcije potrebno dati neku vrstu analize odakle se ovaj obrazac otvara. Na primjer, analiziranje parametara obrasca.

3. Konačno, uslov odabira se može postaviti u prilagođeni upit koji bira podatke za dinamičku listu. Na primjer, trebamo otvoriti listu faktura koje sadrže stavku označenu u listi stavki.

Da biste to učinili, u obliku liste stavki kreirajte naredbu i odgovarajuće dugme Prijemne fakture.

Hajde da ispunimo rukovalac izvršenja za ovu naredbu na sledeći način:

&OnClient

Procedura Prijem računi (naredba)

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

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Kraj procedure

U ovom rukovaocu primamo obrazac za listu faktura i prosljeđujemo vezu na trenutnu stavku u listi stavki parametru obrasca FilterByProduct i otvaramo obrazac sa ovim parametrom.

Zatim ćemo kreirati obrazac liste dokumenata Kupovina faktura i kreirajte atribut obrasca FilterByProduct, koji ćemo koristiti kao parametar obrasca prilikom otvaranja. Sada otvorimo paletu svojstava glavnog atributa obrasca Lista. Postavimo zastavu CustomRequest i u redu Postavljanje liste kliknite Otvori.

U polje Zahtjev unesite sljedeći tekst zahtjeva:

ODABIR

Račun prijema dokumenta Broj,

Dokument prijema Račun.Datum

OD

Document.ReceiptInvoice AS DocumentReceiptInvoice

GDJE

Račun prijema dokumenta.Proizvodi.Proizvod = &Proizvod

U zahtjevu koristimo parametar Stavka, koji će dobiti vezu na trenutni red na listi artikala, sadržan u parametru obrasca liste faktura FilterBy Artikl. Da bismo to učinili, u obrascu za obradu događaja OnOpen napisat ćemo kod za postavljanje vrijednosti parametra zahtjeva za proizvod:

&OnClient

Procedura otvaranja (Neuspjeh)

List.Parameters.SetParameterValue("Proizvod", FilterByProduct);

Kraj procedure

Evo List.Options je lista parametara zahtjeva dinamičke liste za atribut List. Vrijednost parametra Product postavljena je jednaka vrijednosti parametra obrasca FilterByProduct.

Kao rezultat, pritiskom na dugme Prijemne fakture u obliku liste artikala, dobićemo listu samo onih faktura koje sadrže artikl koji je trenutno odabran na listi artikala.

Demo primjer za 3. opciju nalazi se u direktoriju 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Primjer je izveden na verziji platforme 8.2.9.356.

Ovaj kod vam omogućava da otvorite listu dokumenata sa određenim izborom; takođe možete otvoriti listu elemenata direktorijuma sa željenim izborom

Code 1C v 8.2 UP Form = OpenForm("Dokument. Faktura.Form.ListForm"); //Otvori obrazac
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //Dodaj odabir
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //Kako ćemo porediti
SelectOwner.Use = Tačno; // Postavite potvrdni okvir za korištenje NewDataCompositionField("Nomenclature")
SelectionOwner.LeftValue = NewDataCompositionField("Račun"); //Koje detalje ćemo koristiti za odabir?
SelectionOwner.RightValue = Object.Account; // I samo značenje selekcije

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

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

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

Na primjer, u sljedećem primjeru otvara se lista faktura sa izborom u polju Broj, jednakom 333.

Kod 1C v 8.2 Vrijednost odabira UE = Nova struktura("Broj", "333");
SelectionParameters = Nova struktura("Izbor", SelectionValue);
OpenForm("Dokument. Račun prijema. Obrazac liste", Opcije odabira);

Drugi način

Možete otvoriti obrazac liste bez parametara:

Code 1C v 8.2 UE OpenForm("Dokument. Račun za prijem. Obrazac liste");

A zatim, u rukovaocu događaja obrasca za listu faktura Kada je CreatedOnServer, napišite kod koji kreira selekciju u dinamičkoj listi, što je glavni atribut obrasca:

Kod 1C v 8.2 UP &OnServer
Procedura prilikom kreiranja na serveru (neuspjeh, standardna obrada)
Element odabira = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Broj");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = Tačno;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Kraj procedure

Prednosti ove metode su što se tip poređenja za odabir može postaviti ne samo na Jednako, kao u prvom slučaju, već i na 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 označiti kao glavni. A ako je ipak glavni, onda je prije instaliranja selekcije potrebno dati neku vrstu analize odakle se ovaj obrazac otvara. Na primjer, analiziranje parametara obrasca.

Treći način

Konačno, uslov odabira se može postaviti u prilagođeni upit koji odabire podatke za dinamičku listu.

Na primjer, trebamo otvoriti listu faktura koje sadrže stavku označenu u listi stavki.

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

Hajde da ispunimo rukovalac izvršenja za ovu naredbu na sledeći način:

Kod 1C v 8.2 UP &OnClient
Procedura Prijem računi (naredba)
SelectionParameters = Nova struktura("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Dokument. Račun prijema. Obrazac liste", Opcije odabira);
Kraj procedure

U ovom rukovatelju otvaramo obrazac za listu faktura, prosljeđujući vezu na trenutnu stavku na listi stavki do parametra obrasca FilterByProduct.

Zatim ćemo kreirati obrazac za listu dokumenata: Račun za prijem i kreirati parametar obrasca FilterBy Product, koji ćemo koristiti za otvaranje obrasca sa traženim odabirom.

Sada otvorimo paletu svojstava glavnog atributa obrasca Lista. Postavite oznaku prilagođenog upita 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,
Dokument prijema Račun.Datum
OD
Document.ReceiptInvoice AS DocumentReceiptInvoice
GDJE
Račun prijema dokumenta.Proizvodi.Proizvod = &Proizvod

U zahtjevu koristimo parametar Stavka, koji će dobiti vezu na trenutni red na listi artikala, sadržan u parametru obrasca liste faktura FilterBy Item.

Da biste to učinili, u obrascu liste obradivač događaja Kada CreatedOnServer, napisaćemo kod za postavljanje vrijednosti parametra zahtjeva za proizvod:

Kod 1C v 8.2 UP &OnClient
Procedura otvaranja (neuspjeh)
List.Parameters.SetParameterValue("Proizvod", Parameters.FilterByProduct);
Kraj procedure

Ovdje List.Parameters je lista parametara zahtjeva dinamičke liste za atribut List. Vrijednost parametra Product postavljena je jednaka vrijednosti parametra obrasca FilterByProduct.

Kao rezultat toga, klikom na dugme Prijem faktura u obrascu liste artikala, dobićemo listu samo onih faktura koje sadrže artikal koji je trenutno izabran 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 nekoliko vrednosti

U gornjem primjeru koji smo pogledali kako podesiti odabir na obrascu za odabir po specifičnoj vrijednosti. Sada pogledajmo situaciju u kojoj trebate zamijeniti nekoliko vrijednosti, to može biti, na primjer, niz ili neučitano iz rezultata upita. Ovo je izbor u polju za unos 1c sa višestrukim značenjima.

Prvo, dobijemo obrazac za odabir, unesemo "Element" (vlasnik) u parametre, postavimo oznaku načina odabira. Zatim kreiramo listu vrijednosti i niz, napominjemo da kao odabir prilikom postavljanja tipa poređenja na listi, objekt može biti prisutan samo s tipom ListValues. Dodamo elemente nizu, a zatim učitavamo ovaj niz u Listu vrijednosti, koju naknadno postavljamo u selekciji. Također, ne zaboravite omogućiti oznaku za korištenje ovog odabira i postaviti tip poređenja.

Podešavanje odabira u polju za unos na obrascu u 1C 8.3, događaj Početak odabira

Sada razmotrimo izbor u polju za unos na upravljanom 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 “Start of Selection”, kliknemo na lupu i nađemo se u proceduri. Vidimo parametar Selection Data; ovaj parametar je tipa ValueList. Kako bismo izbor ograničili na potrebne elemente, potrebno je popuniti Listu vrijednosti. Elemente možemo odabrati samo na serveru, tako da kreiramo proceduru s &OnServer direktivom kompilacije. U ovoj proceduri popunite podatke o odabiru.

Najbolji članci na ovu temu