Kako programski popuniti i otvoriti obrazac za novi dokument? Kako otvoriti formu postojećeg objekta? 1s 8 programski otvara obrazac dokumenta.
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 UnesiteVrijednost(). 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: nezavisno, blokiranje celog interfejsa, 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— ovo 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:
- U strukturu unosimo podatke ključa zapisa sa potrebnim vrijednostima.
- Dobivenu strukturu postavljamo u niz.
- Kreiramo ključ zapisa iz niza.
- 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 formu postojećeg objekta?
Prilikom otvaranja forme postojećeg objekta, pored naziva obrasca, morate navesti i objekat čiji obrazac treba otvoriti. Da biste to učinili, koristite parametar obrasca Ključ i vezu do objekta koji nas zanima.
Na primjer, ako sa obrasca liste organizacija trebate otvoriti obrazac organizacije na kojoj 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 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 (ObjectForm), naznačite riječ Form iza koje slijedi tač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 veze na objekt, nije potrebno proslijediti 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 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 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 obrazac stavke hijerarhijskog direktorija. Kada koristite ovu proceduru, platforma će uputiti dodatni poziv serveru kako bi utvrdila da li je element grupa ili ne, jer se za element i za grupu moraju otvoriti različiti oblici.
U isto vrijeme, ove informacije mogu biti unaprijed poznate programeru unutar njegovog algoritma, a pomoću funkcije OpenForm() programer može otvoriti željeni obrazac bez dodatnih poziva serveru, odmah navodeći standardni naziv glavnog formu.