Prosljeđivanje parametara u upravljani obrazac 1s 8.3. Parametri obrasca. Kako se parametri prosljeđuju u regularnim oblicima

Programski otvaranje obrazaca u upravljana aplikacija 1C se značajno razlikuje od njihovog otkrića u redovna primjena. 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 morate 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 Objekat 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

&OnServer
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:

  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

Imamo obradu sa ovim osnovnim oblikom:

Iz ovog obrasca trebamo otvoriti neki dodatni obrazac, a tekst iz polja obrasca moramo prenijeti u otvorenu formu. Dodatni obrazac je sljedeći:

Dakle, kada kliknete na dugme „Pokreni“, otvara se dodatni obrazac sa tekstom koji je već unesen u polje:

Razmotrimo način rješavanja takvog problema.

Rješenje

Za prijenos parametara između regularnih obrazaca, možete koristiti globalnu varijablu za izvoz modula obrasca ili kreirati atribut obrasca. Razmotrimo obje metode za naš zadatak.

1. Upotreba globalne varijable izvoza modula obrasca.

Dodajte sljedeće glavnom obrascu za proceduru rukovanja gumbom "Pokreni": programski kod:

Procedura ButtonExecutePress(Button)Form = GetForm(" AdditionalForm" ) ; // "Tekst" je globalna izvozna varijabla modula obrasca koji se otvara Forma. Tekst = Elementi forme. Tekst. Značenje; Forma. Open();

Kraj procedure

Varijabla teksta dodata je modulu obrasca koji se otvara zajedno sa "BeforeOpen" obrađivačem događaja: Izvoz varijabilnog teksta ; Procedura prije otvaranja(Failure, StandardProcessing)FormElements. TransmittedText. Vrijednost = Tekst;

Kraj procedure

Problem je riješen, i to vrlo jednostavno!

2. Korištenje detalja obrasca.

Za drugu metodu, ne moramo čak ni da prepisujemo rukovaoce dugmadi „Run“ i „BeforeOpen“. Sve što je potrebno je da u otvoren obrazac dodate atribut “Text” sa vrstom stringa.

Zaključci

U upravljanim oblicima, prenošenje parametara je mnogo lakše. U konvencionalnim oblicima, opisani pristup se koristi u većini slučajeva. Možete obraditi primjer iz članka.

preuzmi sa linka

Da bi podržao automatsku interakciju između formulara, sistem obezbeđuje niz standardnih parametara koji se koriste za kontrolu obrazaca kada se otvore. Koristeći ove parametre, sistem implementira u polja obrasca izbor iz izbornih obrazaca, otvaranje obrazaca objekata, rad standardnih naredbi itd. Odnosno, pružaju različite scenarije rada interfejsa ugrađene u sistem. Ali programer takođe može koristiti ove parametre u ugrađenom jeziku, prosleđujući ih prilikom pozivanja metode OpenForm().

  • Navodimo parametre koje pruža sistem i njihovu svrhu: Režim odabira
  • – obrazac se otvara u načinu odabira. Obezbeđuje ekstenzija obrasca za upravljanje dinamičkom listom. CurrentRow
  • – niz koji će se aktivirati u listi kada se otvori. Prosljeđuje se vrijednost koja identificira red. Obezbeđuje ekstenzija obrasca za upravljanje dinamičkom listom. Odabir grupa i elemenata
  • – ovaj parametar postavlja svojstvo Izbor grupa i elemenata tabele glavnog atributa obrasca. Obezbeđuje ekstenzija obrasca za upravljanje dinamičkom listom. AllowSelectRoot
  • Odabir– definira mogućnost odabira korijena u obrascu s dinamičkom listom prikazanom kao stablo. Obezbeđuje ekstenzija upravljanog obrasca za dinamičku listu prikazanu kao stablo. – selekcija uspostavljena u dinamička lista
  • Ključ. Predstavlja strukturu. Imena elemenata odgovaraju nazivima polja po kojima se vrši selekcija, a vrijednosti sadrže vrijednosti odabira. Obezbeđuje ekstenzija obrasca za upravljanje dinamičkom listom.
  • – vrijednost koja identifikuje objekt koji se uređuje u obrascu. Ako vrijednost nedostaje ili je netočna, kreira se novi objekt koristeći preostale parametre. Obezbeđuje ekstenzije obrasca objekta i upravitelj zapisa registra informacija.– vrijednost koja identificira objekt koji će se koristiti za kopiranje prilikom kreiranja novog objekta. Obezbeđuje ekstenzije obrasca objekta i upravitelj zapisa registra informacija.
  • Vrijednosti popunjavanja– vrijednosti za popunjavanje detalja novog objekta. Predstavlja strukturu. Imena elemenata odgovaraju nazivima detalja, a vrijednosti sadrže podatke koji će se koristiti za popunjavanje navedenih detalja. Obezbeđuje ekstenzije obrasca objekta i upravitelj zapisa registra informacija.
  • Baza– vrijednost koja identificira objekt koji će se koristiti kao osnova prilikom kreiranja novog objekta unosom na osnovu. Omogućeno ekstenzijama obrasca objekta.
  • Ovo je grupa– definira tip novog objekta: grupa ili element. Omogućeno ekstenzijama obrasca objekta.

Primjer rada sa parametrima obrasca

Da biste pokazali kako funkcionišu parametri obrasca, razmotrite implementaciju odabira elementa u polju za unos. Suština primjera bit će implementacija mehanizma za odabir elementa sa liste na ugrađenom jeziku.

Do trenutka kada počnete raditi s primjerom, morate imati konfiguraciju sa sljedećim svojstvima:

  • Glavni način pokretanja – Upravljana aplikacija;
  • postoji direktorij Proizvodi sa hijerarhijom grupa i elemenata;
  • postoji direktorij Analogi sa atributom SelectedProduct tipa DirectoryLink.Products;
  • oba direktorija imaju forme upravljanih elemenata.

Sada implementirajmo u ovoj konfiguraciji sve mehanizme koje platforma koristi za odabir elementa sa liste na ugrađenom jeziku. Pritom ćemo vidjeti kako se koriste standardni parametri forme; kako ih sam sistem koristi; kako ih programer može koristiti.

Dodajmo dodatnu zastavicu koja će kontrolirati zatvaranje obrasca za odabir nakon odabira elementa. Nazovimo ovu zastavicu CloseAfterSelection (tip Boolean). Dodajmo ga kao parametar obrasca Obrazac za odabir direktorija proizvoda.

Da biste otvorili obrazac za odabir elemenata, potrebno je da kreirate rukovalac događaja za događaj Početak odabira za element obrasca Odabrani proizvod u obliku elementa direktorija Analogi:

&OnClient

Procedura SelectedProductStartSelection(Item, StandardProcessing)

StandardProcessing = False;

SelectionParameters = Nova struktura;

SelectionParameters.Insert("SelectionMode", True);

SelectionParameters.Insert("SelectingGroupsAndElements", UsingGroupsAndElements.Elements);

SelectionParameters.Insert("AllowRootSelection", False);

SelectionParameters.Insert("CurrentRow", Object.SelectedProduct);

SelectionParameters.Insert("CloseAfterSelection", False);

OpenForm("Directory.Products.SelectionForm", SelectionParameters, Elements.SelectedProduct);
Kraj procedure
Potrebno se posebno zadržati na trećem parametru metode OpenForm(). Ovaj parametar određuje ko će biti vlasnik obrasca za odabir i ko će biti obaviješten o izvršenom odabiru. U ovom slučaju smo naveli sam element forme kao vlasnika obrasca za selekciju, ali ovim parametrom možemo specificirati i samu formu. U ovom slučaju će biti potrebno implementirati obrađivač obrade odabira modula obrasca iu njemu odlučiti u koji atribut obrasca želite smjestiti odabrane podatke. Ispis (Ctrl+P) Opcije obrasca
1. Opće informacije
Parametri obrasca (kartica Opcije) služe u dvije svrhe:
● Opišite skup podataka koji će uticati na otvaranje obrasca (parametarizacija obrasca). Da biste to učinili, morate navesti sve potrebne parametre i navesti njihove vrste. WhenCreatingOnServer() ● Odredite parametre koji će uticati na ključ jedinstvenosti obrasca. Da biste to učinili, morate postaviti svojstvo Ključni parametar):

oni parametri koji treba da učestvuju u formiranju ključa jedinstvenosti forme. Kada pokušate da otvorite obrazac, sistem traži postojeći obrazac koristeći generisani ključ jedinstvenosti obrasca. Ako obrazac sa primljenim ključem postoji u sistemu
jedinstvenost, ta forma se vraća; ako nije, kreira se novi obrazac..
Prilikom pozivanja obrasca, vrijednosti parametara koje je kreirao programer mogu se navesti u strukturi parametara zajedno sa sistemskim parametrima obrazaca (ako ih ima).
Parametri obrasca mogu se proslijediti obrascu u trenutku njegovog kreiranja. Analiza proslijeđenih parametara može se izvršiti u slučaju(Zbirka parametara je svojstvo objekta ManagedForm// Na lokaciji poziva.
// Kreirajte parametar obrasca
Parametri = nova struktura();

Options.Insert
&OnServer
("Važnost", PredefinedValue
(“Enumeration.Importance.Important”)); // Otvaranje obrasca sa parametrima. = OpenForm (“GeneralForm.ViewForm”, Parametri);// U modulu forme.

Procedura
WhenCreatingOnServer(Failure, StandardProcessing)

Ako Parameters.Importance Kada je CreatedOnServer svi parametri obrasca koji nisu ključni su uklonjeni iz kolekcije Parameters.
Savjet. Ne-ključni parametri obrasca potrebni za dalji rad moraju biti sačuvani u podacima obrasca.

2. Standardni parametri obrasca

Da bi podržao automatsku interakciju između formulara, sistem obezbeđuje niz standardnih parametara koji se koriste za kontrolu obrazaca kada se otvore. Koristeći ove parametre, sistem implementira u polja obrasca izbor iz izbornih obrazaca, otvaranje obrazaca objekata, rad standardnih naredbi itd. Odnosno, pružaju različite scenarije rada interfejsa ugrađene u sistem.
Ali programer takođe može koristiti ove parametre u ugrađenom jeziku, prosleđujući ih prilikom pozivanja metode OpenForm().
Lista standardnih parametara obrasca u zavisnosti od tipa ekstenzije obrasca može se naći u odjeljcima Ugrađeni jezik - Interfejs
(upravljano) – Upravljani oblik – Proširivanje... ugrađeno certifikati

3. Primjer rada sa parametrima obrasca

Da biste pokazali kako funkcionišu parametri obrasca, razmotrite implementaciju odabira elementa u polju za unos. Suština primjera bit će implementacija mehanizma za odabir elementa sa liste na ugrađenom jeziku.
Do trenutka kada počnete raditi s primjerom, morate imati konfiguraciju sa sljedećim svojstvima:
● postoji direktorijum Proizvodi sa hijerarhijom grupa i elemenata;
● postoji direktorij Analogi sa detaljima SelectedProduct type DirectoryLink.Products;
● oba direktorija imaju forme elemenata.
Sada implementirajmo u ovoj konfiguraciji sve mehanizme koje platforma koristi za odabir elementa sa liste na ugrađenom jeziku. U ovom slučaju ćemo vidjeti:
● kako se koriste standardni parametri obrasca;
● kako ih sam sistem koristi;
● kako ih programer može koristiti.
Hajde da dodamo dodatni parametar, koji će kontrolirati zatvaranje obrasca za odabir nakon odabira elementa. Nazovimo ovaj parametar CloseAfterSelection(Boolean tip). Dodajmo ga kao parametar obrasca Obrazac za odabir direktorija Proizvodi.
Da biste otvorili obrazac za odabir elemenata, potrebno je da kreirate rukovalac događaja za događaj Početak selekcije za element obrasca SelectedProduct u obliku elementa direktorijuma Analogi.

&OnClient
("Važnost", SelectedProductStartSelection(stavka, standardna obrada)
StandardProcessing= False;
Opcije izbora= Nova struktura;
Izbor Options.Insert(“SelectionMode”, True);
Izbor Options.Insert(“Odabir grupa i elemenata”, Korištenje GroupsAndElements.Elements);
Izbor Options.Insert(“AllowRootSelection”, False);
Izbor Options.Insert(“Trenutna linija”, Object.SelectedProduct);
Izbor Options.Insert(“CloseAfterSelection”, False);
OpenForm(“Directory.Products.SelectionForm”, Opcije izbora, Items.SelectedProduct);
Kraj procedure
Potrebno se posebno zadržati na trećem parametru metode OpenForm(). Ovaj parametar određuje ko će biti vlasnik obrasca za odabir i ko će biti obaviješten o izvršenom odabiru. U ovom slučaju smo naveli sam element forme kao vlasnika obrasca za selekciju, ali ovim parametrom možemo specificirati i samu formu. U ovom slučaju će biti potrebno implementirati rukovalac ProcessingSelection modul forme i odlučite u njemu u koji atribut forme želite smjestiti odabrane podatke.
NAPOMENA. Ako ne implementiramo obrađivač događaja StartSelection, tada će njegove radnje izvršiti sam sistem. Ovo vrijedi za sve daljnje rukovaoce koji se koriste u primjeru.
Sada morate obraditi proslijeđene parametre u obrascu za odabir. Uradimo ovo u rukovaocu Kada je CreatedOnServer() modula obrasca za odabir.

&OnServer
("Važnost", WhenCreatingOnServer(Neuspjeh, Standardna obrada)
StandardProcessing= False;
Elements.List.SelectingGroupsAndElements = Parameters.SelectingGroupsAndElements;
Elements.List.AllowRootSelection = Parametri.AllowRootSelection;
Elements.List.CurrentRow = Parameters.CurrentRow;
CloseOnSelection = Options.CloseAfterSelection;
Kraj procedure
Kako bismo provjerili funkcionalnost parametara obrasca koje smo postavili, pomoću konfiguratora ćemo postaviti svojstvo List za tabelu obrasca za odabir – niz koji će se aktivirati u listi kada se otvori. Prosljeđuje se vrijednost koja identificira red. Obezbeđuje ekstenzija obrasca za upravljanje dinamičkom listom. na vrijednost Grupe (bez korištenja parametra, izbor elemenata direktorija neće biti dostupan).
NAPOMENA. Ako tabela Lista koja prikazuje listu proizvoda nema svojstvo SelectionMode postavljeno na Tačno, tada izbor proizvoda neće biti dostupan.
Sada trebamo rukovati odabirom željenog elementa u obrascu za odabir. Da biste to učinili, morate definirati rukovatelja za događaj SelectValue tabele obrasca.

&OnClient
("Važnost", ListSelectionValues(Element, StandardProcessing, Value)
StandardProcessing= False;
NotifyOfSelection(Vrijednost);
Kraj procedure
Sve što treba da uradimo je da implementiramo obradu selekcije elemenata u samo polje za unos. Da biste to učinili, morate upravljati događajem ProcessingSelection naše polje za unos SelectedProduct.

&OnClient
("Važnost", SelectedItemSelectionProcessing(Item, SelectedValue, StandardProcessing)
StandardProcessing= False;
Object.SelectedProduct = SelectedValue;
Kraj procedure
Nezavisno smo implementirali sistemski mehanizam za odabir vrijednosti u polju za unos na obrascu.
PAŽNJA! Ovaj primjer nije potpun. Njegova jedina svrha je da demonstrira mehanizme za rad sa parametrima forme.
Ako prilikom kreiranja parametara (upravljača SelectedProductStartSelection()) zamijeni red:

Izbor Options.Insert(“CloseAfterSelection”, Tačno);
po redu:
Izbor Options.Insert(“CloseAfterSelection”, False) ;
tada se obrazac za odabir više neće zatvoriti nakon što se izvrši odabir. Ovo se može koristiti, na primjer, za implementaciju obrasca za odabir (odabir nekoliko proizvoda bez zatvaranja obrasca za odabir).

Operacija