Kako otvoriti formu postojećeg objekta?
Prilikom otvaranja forme postojećeg objekta, osim naziva forme potrebno je naznačiti i objekt čiju formu treba otvoriti. Da biste to učinili, upotrijebite parametar ključnog obrasca i poveznicu na predmet koji nas zanima.
Na primjer, ako iz obrasca popisa organizacija trebate otvoriti obrazac organizacije na kojem se nalazi kursor, to možete učiniti na sljedeći način:
Parametre forme prosljeđujemo u obliku strukture, pri čemu naziv elementa strukture odgovara nazivu parametra forme, a vrijednost je vrijednost na koju želimo postaviti parametar forme.
Ako želite otvoriti ne glavnu, već proizvoljnu formu objekta kreiranu u konfiguratoru, umjesto standardnog naziva glavne forme (ObjectForm) označite riječ Forma iza koje slijedi točka - naziv forme kreirane u konfigurator.
Na primjer:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = New Structure("Key", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);
Treba napomenuti da u slučaju kada osim poveznice na objekt ne treba prosljeđivati nikakve parametre formi koja se otvara, a potrebna je glavna forma postojećeg objekta, možete koristiti jednostavniju metodu - otvoriti obrazac pomoću procedure OpenValue():
OpenValue(Stavke.Popis.TrenutniRed);
Ova metoda je manje svestrana, 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 retka koju smo ranije napisali.
Međutim, potrebno je biti oprezan pri korištenju ovog postupka. U nekim slučajevima to može uzrokovati dodatne pozive poslužitelju, na primjer, kada trebate otvoriti obrazac stavke hijerarhijskog imenika. Prilikom korištenja ove procedure, platforma će uputiti dodatni poziv poslužitelju kako bi utvrdila je li element grupa ili ne, budući da se za element i za grupu moraju otvoriti različiti obrasci.
Istovremeno, ove informacije mogu biti unaprijed poznate programeru unutar njegovog algoritma, a pomoću funkcije OpenForm() programer može otvoriti željeni obrazac bez dodatnih poziva poslužitelju, odmah navodeći standardni naziv glavnog oblik.
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() . Otvoren()
Ovo je najsporiji način otvaranja obrazaca. Međutim, omogućuje programsku obradu obrasca prije otvaranja. Za obradu koda morate malo promijeniti:
Obrazac = GetForm( "Dokument. Potvrda o primitku robe i usluga. Obrazac dokumenta")
;
//Ovdje izvodimo radnje s formom
Oblik. Otvoren();
Treba uzeti u obzir da će se po primitku obrasca izvršiti druga procedura događaja WhenCreatedOnServer.
Pogledajmo druge metode koje vam omogućuju brže i praktičnije otvaranje obrazaca u upravljanoj 1C aplikaciji. Ovisno o konkretnoj situaciji, mogu se koristiti različite metode.
1. Kako otvoriti obrazac objekta u upravljanoj aplikaciji ako postoji poveznica na njega.
U ovom slučaju, sve je krajnje jednostavno.
RefLink = Imenici. Nomenklatura. FindByCode("000000001" ) ;
OpenValue(RefLink) ;
2. Kako otvoriti obrazac za odabir i zatim dobiti odabranu vrijednost.
Za to postoji funkcija UnesiteVrijednost(). Funkcija ima 3 parametra:
- Varijabla u koju će biti upisana odabrana vrijednost;
- Savjet koji će se prikazati u prozoru za odabir;
- Opis tipova odabranih vrijednosti. Može postojati nekoliko vrsta, au tom slučaju od vas će se tražiti da odaberete vrstu prije odabira određene vrijednosti.
Kao rezultat izvršavanja funkcije otvorit će se zadani obrazac za odabir objekta navedene vrste.
Varijabilna vrijednost;
Niz= novi niz;
Niz. Dodaj(Upišite( "Veza imenika. Nomenklatura")
)
;
Niz. Dodaj(Upišite( "DirectoryLink. Protustrane strane")
)
;
Opis tipa= novi opis tipa(niz) ;
Res = EnterValue(Value, "Hint" , TypeDescription) ;
Prethodne metode dopuštale su samo otvaranje zadanih obrazaca za objekte (oblik objekta ili obrazac za odabir). Ako trebate otvoriti prilagođeni obrazac, možete koristiti ovu funkciju OpenForm().
Ova funkcija ima dosta parametara. Pogledajmo neke od njih:
- Naziv obrasca— ovdje možete odabrati jedan od standardnih oblika objekta, na primjer, Obrazac za odabir ili Obrazac popisa. Ili određeni obrazac koji su izradili programeri.
- Mogućnosti— omogućuje vam da ga prenesete u obrazac u obrascu strukture neke parametre prije otvaranja, čime se određuju izlazni podaci. Parametri mogu biti bilo koji podaci koji se mogu prenijeti od klijenta do poslužitelja. Parametri proslijeđeni prilikom otvaranja obrasca mogu se obraditi u proceduri WhenCreatingOnServer() na obrascu koji se otvara.
- Način otvaranja obrazaca— 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. Označeno je masnim slovima na popisu detalja obrasca i obično se poziva Objekt u obliku elemenata priručnika i dokumenata. Ostali objekti mogu imati drugačije ime. Da biste otvorili obrazac postojećeg objekta, morate proslijediti parametar obrascu koji se otvara Ključ s vrijednošću kao referencom na objekt.
&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Ključ" , FindC() );
OpenForm(, Parametar);
Kraj postupka
&Na poslužitelju
Funkcija FindC();
Vratite direktorije. Protustranke. FindByRequisites ("TIN", "745107734623")
EndFunction
4. Kako otvoriti formu novog objekta
Ovdje će poslužiti jednostavna funkcija OpenForm() bez ikakvih parametara.
&NaKlijentu
Procedura Naredba1 (Naredba)
OpenForm( "Imenik. Protustrane. Obrazac objekta")
;
Kraj postupka
5. Kako otvoriti obrazac novog objekta i ispuniti ga na temelju nečega
Morate proslijediti parametar Baza, čija će vrijednost biti referenca na osnovni objekt punjenja. Ovo će pokrenuti postupak ProcessFill().
&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Parametar. Insert("Baza", LinkToBuyerAccount) ;
OpenForm( "Dokument. Prodaja roba i usluga. Obrazac objekta", Parametar);
Kraj postupka
Ovaj primjer će stvoriti dokument Prodaja roba i usluga a popunjava se na temelju računa za plaćanje kupcu, čiji je link prenesen.
6. Kako otvoriti obrazac i na njemu postaviti odabir
Odabir na 1C obrascima može biti jednostavan ili složen. Jednostavan odabir uključuje izraze poput Organizacija = Horns and Hooves LLC. Složeni odabir uključuje druge vrste usporedbe, npr. Na listi. U ovom ćemo članku razmotriti organizaciju jednostavne selekcije, a poseban članak bit će posvećen složenoj selekciji.
Da biste organizirali jednostavan odabir, morate proslijediti parametar s ključem obrascu koji se otvara Izbor, vrijednost će biti struktura u kojoj je ključ naziv polja dinamičkog popisa, a vrijednost podaci koji se traže.
Na primjer, otvorimo obrazac popisa imenika GTD brojevi i tamo napravite odabir prema vlasniku - element imenika Nomenklatura.
&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
Odabir= nova struktura;
Izbor. Insert("Owner", LinkToNomenclature) ;
Parametar. Umetni("Odabir", Odabir) ;
OpenForm( "Imenik. GTD brojevi. Obrazac popisa", Parametar);
Kraj postupka
7. Kako otvoriti obrazac za upis u registar podataka
Da biste to učinili, trebat će vam ključ za unos u registar podataka.
Ključ za snimanje— to su vrijednosti svih mjerenja i period (ako je registar periodičan). To jest, ključ zapisa su parametri po kojima se zapis može jedinstveno identificirati.
Algoritam otvaranja je sljedeći:
- U strukturu unosimo podatke o ključu zapisa s potrebnim vrijednostima.
- Dobivenu strukturu postavljamo u niz.
- Iz polja stvaramo ključ zapisa.
- Formi koja se otvara prosljeđujemo parametar Ključ s ključem snimanja iz koraka 3 kao vrijednošću.
&NaKlijentu
Procedura Naredba1 (Naredba)
Parametar= nova struktura;
KeyParameters= nova struktura;
Ključni parametri. Insert("Nomenklatura", LinkToNomenclature) ;
Ključni parametri. Insert("PriceType", LinkToPriceType) ;
Ključni parametri. Umetni("Razdoblje", Datum) ;
KeyArray = Novi niz;
KeyArray. Dodaj(KljučniParametri) ;
EntryKey = Novo( "Ključ zapisa registra informacija. Nomenklatura cijena", niz ključeva);
Parametar. Umetni("Ključ",Ključ za snimanje) ;
OpenForm( "Registar informacija. Cijene nomenklature. Obrazac evidencije", Parametar);
Kraj postupka