Kako programsko izpolniti in odpreti obrazec novega dokumenta? Kako odpreti obrazec obstoječega predmeta? Programsko odpiranje obrazca novega dokumenta 1s 8.3
Programsko odpiranje obrazcev v upravljani aplikaciji 1C se bistveno razlikuje od odpiranja v običajni aplikaciji. Poglejmo najprej staro metodo. Sestoji iz sprejema obrazca in njegovega nato odpiranja v običajnem ali modalnem načinu (ko se odpre v modalnem načinu, obrazec blokira program).
GetForm(). Odprto()
To je najpočasnejši način odpiranja obrazcev. Vendar pa vam omogoča programsko obdelavo obrazca, preden ga odprete. Za obdelavo kode morate nekoliko spremeniti:
Obrazec = GetForm( "Dokument. Prejem blaga in storitev. Obrazec dokumenta")
;
//Tu izvajamo dejanja z obrazcem
Oblika. Odprto();
Upoštevati je treba, da se ob prejemu obrazca izvede drug dogodek WhenCreatedOnServer.
Oglejmo si druge metode, ki vam omogočajo hitrejše in bolj priročno odpiranje obrazcev v upravljani aplikaciji 1C. Glede na specifično situacijo se lahko uporabijo različne metode.
1. Kako odpreti obrazec predmeta v upravljani aplikaciji, če obstaja povezava do njega.
V tem primeru je vse izjemno preprosto.
RefLink = Imeniki. Nomenklatura. FindByCode("000000001" ) ;
OpenValue(RefLink) ;
2. Kako odpreti izbirni obrazec in nato pridobiti izbrano vrednost.
Za to obstaja funkcija VnesiteVrednost(). Funkcija ima 3 parametre:
- Spremenljivka, v katero bo zapisana izbrana vrednost;
- Namig, ki bo prikazan v izbirnem oknu;
- Opis vrst izbranih vrednosti. Obstaja lahko več vrst, v tem primeru boste pozvani, da izberete vrsto, preden izberete določeno vrednost.
Kot rezultat izvajanja funkcije se odpre privzeti izbirni obrazec za objekt navedene vrste.
spremenljiva vrednost;
Array= nova matrika;
Array. Dodaj(Vnesite( "DirectoryLink. Nomenclature")
)
;
Array. Dodaj(Vnesite( "DirectoryLink. Nasprotne stranke")
)
;
Opis tipa= nov opis tipa(niz) ;
Res = EnterValue(Value, "Hint" , TypeDescription) ;
Prejšnje metode so vam omogočale samo odpiranje privzetih obrazcev za predmete (obrazec predmeta ali obrazec za izbor). Če morate odpreti obrazec po meri, lahko uporabite to funkcijo OpenForm().
Ta funkcija ima kar nekaj parametrov. Oglejmo si nekaj izmed njih:
- Ime obrazca— tukaj lahko izberete eno od standardnih oblik predmeta, npr. Izbirni obrazec oz Obrazec za seznam. Ali poseben obrazec, ki so ga ustvarili razvijalci.
- Opcije— omogoča prenos v obrazec v obrazcu strukture nekaj parametrov, preden ga odprete, s čimer določite izhodne podatke. Parametri so lahko kateri koli podatki, ki jih je mogoče posredovati od odjemalca do strežnika. Podane parametre ob odpiranju obrazca je mogoče obdelati v proceduri WhenCreatingOnServer() na obrazcu, ki se odpre.
- Način odpiranja obrazca— ima 3 možnosti: neodvisno, blokiranje celotnega vmesnika, blokiranje obrazca lastnika.
Poglejmo, kako se funkcija uporablja OpenForm() v različnih situacijah.
3. Kako odpreti obrazec obstoječega predmeta
Vsak obrazec ima en ključni atribut. Na seznamu podrobnosti obrazca je označen s krepkim tiskom in se običajno kliče Predmet v obliki elementov referenčnih knjig in dokumentov. Drugi predmeti imajo lahko drugačno ime. Če želite odpreti obrazec obstoječega predmeta, morate obrazcu, ki se odpira, posredovati parameter Ključ z vrednostjo kot sklicem na predmet.
&OnClient
Postopek Ukaz1 (Ukaz)
Parameter= nova struktura;
Parameter. Insert("Key" , FindC() ) ;
OpenForm(, Parameter);
Konec postopka
&Na strežniku
Funkcija FindC();
Vrnite imenike. Nasprotne stranke. FindByRequisites ("TIN", "745107734623")
EndFunction
4. Kako odpreti obrazec novega predmeta
Tu bo zadostovala preprosta funkcija OpenForm() brez parametrov.
&OnClient
Postopek Ukaz1 (Ukaz)
OpenForm( "Imenik. Nasprotne stranke. Oblika predmeta")
;
Konec postopka
5. Kako odpreti obrazec za nov predmet in ga izpolniti na podlagi nečesa
Posredovati morate parameter Osnova, katerega vrednost bo sklic na osnovni objekt polnila. S tem se začne postopek ProcessFill().
&OnClient
Postopek Ukaz1 (Ukaz)
Parameter= nova struktura;
Parameter. Insert("Osnova", LinkToBuyerAccount) ;
OpenForm( "Dokument. Prodaja blaga in storitev. Obrazec predmeta", parameter);
Konec postopka
Ta primer bo ustvaril dokument Prodaja blaga in storitev in se izpolni na podlagi računa za plačilo kupcu, katerega povezava je bila posredovana.
6. Kako odpreti obrazec in na njem nastaviti izbor
Izbor na obrazcih 1C je lahko preprost ali zapleten. Preprosta izbira vključuje izraze, kot je Organizacija = Horns and Hooves LLC. Kompleksna selekcija vključuje druge vrste primerjav, npr. Na seznamu. V tem članku bomo obravnavali organizacijo enostavne izbire, ločen članek pa bo posvečen kompleksni izbiri.
Če želite organizirati preprosto izbiro, morate obrazcu, ki se odpira, posredovati parameter s ključem Izbira, bo vrednost struktura, v kateri je ključ ime polja dinamičnega seznama, vrednost pa iskani podatki.
Na primer, odprimo obrazec seznama imenikov GTD številke in tam izberite lastnik - element imenika Nomenklatura.
&OnClient
Postopek Ukaz1 (Ukaz)
Parameter= nova struktura;
Izbira= nova struktura;
Izbira. Insert("Lastnik", LinkToNomenclature) ;
Parameter. Vstavi("izbor", izbor) ;
OpenForm( "Imenik. Številke GTD. Obrazec seznama", parameter);
Konec postopka
7. Kako odpreti obrazec za vpis v register informacij
Za to boste potrebovali ključ za vnos registra informacij.
Snemalni ključ— to so vrednosti vseh meritev in obdobja (če je register periodičen). To pomeni, da je ključ zapisa parameter, po katerem je mogoče zapis enolično identificirati.
Algoritem odpiranja je naslednji:
- V strukturo vnesemo ključne podatke zapisa s potrebnimi vrednostmi.
- Nastalo strukturo postavimo v polje.
- Iz matrike ustvarimo zapisni ključ.
- Obrazcu, ki se odpre, posredujemo parameter Ključ s ključem zapisa iz 3. koraka kot vrednostjo.
&OnClient
Postopek Ukaz1 (Ukaz)
Parameter= nova struktura;
KeyParameters= nova struktura;
Ključni parametri. Insert("Nomenklatura", LinkToNomenclature) ;
Ključni parametri. Insert("PriceType", LinkToPriceType) ;
Ključni parametri. Vstavi("Obdobje", Datum) ;
KeyArray = Nova matrika;
KeyArray. Dodaj(ključni parametri);
EntryKey = Novo( "Ključ zapisa registra informacij. Nomenklatura cen", KeyArray);
Parameter. Insert("Key", RecordKey) ;
OpenForm( "Register informacij. Cene nomenklature. Evidenčni obrazec", parameter);
Konec postopka
Kako odpreti obrazec obstoječega predmeta?
Pri odpiranju obrazca obstoječega objekta morate poleg imena obrazca navesti tudi objekt, katerega obrazec želite odpreti. Če želite to narediti, uporabite parameter ključnega obrazca in povezavo do predmeta, ki nas zanima.
Na primer, če morate iz obrazca seznama organizacij odpreti obrazec organizacije, na katerem se nahaja kazalec, lahko to storite na naslednji način:
Parametre obrazca posredujemo v obliki strukture, kjer ime elementa strukture ustreza imenu parametra obrazca, vrednost pa je vrednost, na katero želimo nastaviti parameter obrazca.
Če želite odpreti ne glavno, ampak poljubno obliko predmeta, ustvarjenega v konfiguratorju, namesto standardnega imena glavnega obrazca (ObjectForm) označite besedo Obrazec, ki ji sledi pika - ime obrazca, ustvarjenega v konfigurator.
Na primer:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = Nova struktura ("Ključ", ReferenceToDirectoryElement); OpenForm("Imenik.Organizacije.Obrazec.UniversalObjectForm",Parametri obrazca);
Upoštevati je treba, da v primeru, ko poleg povezave do predmeta obrazcu, ki se odpira, ni treba posredovati parametrov in je potrebna glavna oblika obstoječega predmeta, lahko uporabite enostavnejšo metodo - odprite obrazec s postopkom OpenValue():
OpenValue(Items.List.CurrentRow);
Ta metoda je manj vsestranska, vendar v nekaterih primerih prihrani čas in trud. Na primer, v obravnavanem primeru lahko ena taka vrstica nadomesti celoten trivrstični postopek, ki smo ga napisali prej.
Vendar je pri uporabi tega postopka potrebna previdnost. V nekaterih primerih lahko povzroči dodatne klice strežniku, na primer, ko morate odpreti obrazec postavke hierarhičnega imenika. Pri uporabi tega postopka bo platforma dodatno poklicala strežnik, da ugotovi, ali je element skupina ali ne, saj je treba za element in skupino odpreti različne obrazce.
Hkrati so te informacije lahko vnaprej znane razvijalcu znotraj njegovega algoritma, s pomočjo funkcije OpenForm() pa lahko razvijalec odpre želeni obrazec brez dodatnih klicev na strežnik, pri čemer takoj določi standardno ime glavnega oblika.