Kako otvoriti formu postojećeg objekta?
Prilikom otvaranja forme postojećeg objekta, pored naziva forme, morate naznačiti i objekat čija se forma otvara. Da biste to učinili, koristite parametar obrasca Ključ i vezu do objekta koji nas zanima.
Na primjer, ako trebate otvoriti obrazac organizacije na kojoj se nalazi kursor iz obrasca liste organizacija, to možete učiniti na sljedeći način:
Parametre forme prosljeđujemo kao strukturu, pri čemu ime elementa strukture odgovara imenu parametra forme, a vrijednost je vrijednost na koju želimo postaviti parametar forme.
Ako želite da otvorite ne glavni, već proizvoljni oblik objekta kreiranog u konfiguratoru, umjesto standardnog naziva glavne forme (FormObject), označava se riječ Form, a zatim tačka - naziv forme kreiran u konfiguratoru.
Na primjer:
LinkToDirectoryItem = Elements.List.CurrentLine; FormParameters = Nova struktura("Key", LinkToDirectoryItem); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);
Treba napomenuti da u slučaju kada, osim reference na objekt, nije potrebno prenijeti nikakve parametre u obrazac koji se otvara, a potreban je glavni oblik postojećeg objekta, možete koristiti jednostavniju metodu - otvorite obrazac koristeći proceduru OpenValue():
OpenValue(Items.List.CurrentRow);
Ova metoda ima manje svestranosti, ali u nekim slučajevima štedi vrijeme i trud. Na primjer, u razmatranom slučaju jedan takav red može zamijeniti cijelu proceduru od tri reda koju smo ranije napisali.
Međutim, morate biti oprezni kada koristite ovaj postupak. U nekim slučajevima to može uzrokovati dodatne pozive poslužitelju, na primjer, kada trebate otvoriti formu elementa hijerarhijskog direktorija. Kada koristite ovu proceduru, okvir će napraviti dodatni kružni put do servera kako bi utvrdio da li je element grupa ili ne, budući da je potrebno otvoriti različite forme za element i za grupu.
U isto vrijeme, ove informacije mogu unaprijed biti poznate programeru unutar njegovog algoritma, a pomoću funkcije OpenForm() programer može otvoriti traženu formu bez dodatnih poziva serveru, odmah navodeći standardni naziv glavnog obrasca .
Programsko otvaranje obrazaca u upravljanoj 1C aplikaciji značajno se razlikuje od otvaranja u običnoj aplikaciji. Počnimo sa starom metodom. Sastoji se od primanja obrasca i njegovog naknadnog otvaranja u normalnom ili modalnom režimu (kada se otvori u modalnom režimu, 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, kod je potrebno malo izmijeniti:
Form= GetForm( "Dokument. Prijem robe i usluga. Obrazac dokumenta")
;
//Ovdje izvodimo radnje sa formom
Forma. Open() ;
Treba imati na umu da će se po prijemu formulara izvršiti još jedna procedura događaja OnCreateOnServer.
Razmotrite druge metode koje vam omogućavaju da brže i praktičnije otvarate obrasce 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.
RefReference= Reference. Nomenklatura. FindByCode("000000001" ) ;
OpenValue(ReferenceReference) ;
2. Kako otvoriti obrazac za odabir i zatim dobiti odabranu vrijednost.
Za to postoji funkcija UnesiteVrijednost(). Funkcija ima 3 parametra:
- Varijabla u koju će odabrana vrijednost biti upisana;
- Nagoveštaj koji će biti prikazan u okviru za izbor;
- Opis tipova odabranih vrijednosti. Može biti nekoliko tipova, a prije nego što odaberete određenu vrijednost, od vas će biti zatraženo da odaberete tip.
Kao rezultat izvršenja 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 dozvoljavale otvaranje samo formulara postavljenih za objekte prema zadanim postavkama (forma objekta ili obrazac za odabir). Ako trebate otvoriti proizvoljan obrazac, možete koristiti funkciju OpenForm().
Ova funkcija ima dosta parametara. Razmotrimo neke od njih:
- Ime obrasca- ovdje možete odabrati bilo koji od standardnih oblika objekta, na primjer, FormSelect ili FormList. Ili određeni obrazac kreiran od strane programera.
- Parametri- omogućava vam prelazak na 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 OnCreateOnServer() na otvorenom obrascu.
- 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 atributa obrasca i obično se poziva Objekt na oblicima elemenata imenika, dokumenata. Drugi objekti mogu imati drugačije ime. Da biste otvorili obrazac postojećeg objekta, potrebno je da prosledite parametar otvorenom obrascu Ključ sa vrijednošću kao referencom objekta.
&AtClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Key" , FindC() ) ;
OpenForm(, Parametar) ;
EndProcedure
&Na serveru
Funkcija FindC();
Vratite priručnike. Counterparties. FindByAttribute ("TIN", "745107734623" )
EndFunctions
4. Kako otvoriti formu novog objekta
Ovo je samo funkcija OpenForm() bez ikakvih parametara.
&AtClient
Procedura Naredba1 (Naredba)
OpenForm( "Priručnik. Ugovorne strane. Obrazac objekta")
;
EndProcedure
5. Kako otvoriti obrazac za novi objekt i popuniti ga na osnovu nečega
Treba prenijeti parametar Baza, čija će vrijednost biti referenca na osnovni objekt punjenja. Ovo će započeti proceduru HandleFill().
&AtClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Razlog", LinkToAccountToBuyer) ;
OpenForm( "Dokument. Realizacija roba i usluga. Obrazac objekta", Parametar) ;
EndProcedure
Ovaj primjer će kreirati dokument Prodaja robe i usluga i popunjena na osnovu fakture za plaćanje kupcu, na koju je link prenesen.
6. Kako otvoriti obrazac i postaviti odabir na njemu
Izbor na 1C obrascima može biti jednostavan i složen. Jednostavan odabir uključuje izraze poput Organizacija = Horns and Hooves LLC. Složena selekcija uključuje druge vrste poređenja, npr. Navedeno. U ovom članku ćemo razmotriti organizaciju jednostavnog odabira, a složenom će biti posvećen poseban članak.
Da biste organizirali jednostavnu selekciju, potrebno je prenijeti parametar s ključem u otvoreni obrazac Odabir, vrijednost će biti struktura u kojoj je ključ ime polja dinamičke liste, a vrijednost je podatak koji se traži.
Na primjer, otvorimo obrazac za pretragu Ne-GTE i tamo ćemo izvršiti selekciju od strane vlasnika - elementa direktorija Nomenklatura.
&AtClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Izbor= nova struktura;
Odabir. Insert("Vlasnik", LinkToNomenclature) ;
Parametar. Insert("Izbor", Odabir) ;
OpenForm( "Directory.GTE Numbers.List Form", Parametar) ;
EndProcedure
7. Kako otvoriti obrazac za unos u registar informacija
Da biste to učinili, potreban vam je ključ evidencije registra informacija.
Ključ za snimanje su vrijednosti svih mjerenja i perioda (ako je registar periodičan). Odnosno, ključ zapisa su parametri po kojima se zapis može jedinstveno identifikovati.
Algoritam otvaranja je sljedeći:
- U strukturu unosimo podatke ključa zapisa sa potrebnim vrijednostima.
- Dobivenu strukturu postavljamo u niz.
- Iz niza kreiramo ključ zapisa.
- Prosljeđivanje parametra u otvoreni obrazac Ključ sa ključem zapisa iz stavke 3 kao vrijednosti.
&AtClient
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
KeyParameters= nova struktura;
KeyParameters. Insert("Nomenklatura", LinkToNomenklatura) ;
KeyParameters. Insert("PriceType" , LinkToPriceType) ;
KeyParameters. Insert("Period", Datum) ;
ArrayKey = Novi niz;
ArrayKey. Dodaj(KeyParameters) ;
RecordKey = Novo( "Registar informacijaRecordKey.NomenklaturaCijene", ArrayKey) ;
Parametar. Insert("Key", RecordKey) ;
OpenForm( "Registar informacija. Cijene nomenklature. Obrazac evidencije", Parametar) ;
EndProcedure