Kaip atidaryti esamo objekto formą? Kaip programiškai užpildyti ir atidaryti naują dokumento formą? 1c atidarykite esamo dokumento formą.
Programinis formų atidarymas valdomoje 1C programoje labai skiriasi nuo jų atidarymo įprastoje programoje. Pirmiausia pažvelkime į seną metodą. Jį sudaro formos gavimas ir jos atidarymas įprastu arba modalinis režimas(atidarius modaliniu režimu forma blokuoja programą).
GetForm() . Atviras()
Tai lėčiausias formų atidarymo būdas. Tačiau tai leidžia programiškai apdoroti formą prieš ją atidarant. Norėdami apdoroti kodą, turite šiek tiek pakeisti:
Form = GetForm( "Dokumentas. Prekių ir paslaugų gavimas. Dokumento forma")
;
//Čia atliekame veiksmus su forma
Forma. Atviras() ;
Reikia atsižvelgti į tai, kad gavus formą bus vykdoma kita renginio procedūra KadaCreatedOnServer.
Pažvelkime į kitus metodus, leidžiančius greičiau ir patogiau atidaryti formas valdomoje 1C programoje. Priklausomai nuo konkrečios situacijos, gali būti naudojami įvairūs metodai.
1. Kaip atidaryti objekto formą valdomoje programoje, jei yra nuoroda į ją.
Šiuo atveju viskas labai paprasta.
RefLink = Katalogai. Nomenklatūra. FindByCode("000000001" );
OpenValue(RefLink) ;
2. Kaip atidaryti pasirinkimo formą ir tada gauti pasirinktą reikšmę.
Tam yra funkcija EnterValue(). Funkcija turi 3 parametrus:
- Kintamasis, į kurį bus įrašoma pasirinkta reikšmė;
- Užuomina, kuri bus rodoma pasirinkimo lange;
- Pasirinktų reikšmių tipų aprašymas. Gali būti keli tipai, tokiu atveju būsite paraginti pasirinkti tipą prieš pasirenkant konkrečią reikšmę.
Įvykdžius funkciją, atsidarys numatytoji nurodyto tipo objekto pasirinkimo forma.
Kintamoji vertė;
Masyvas= naujas Masyvas;
Masyvas. Add(Tipas( "DirectoryLink.Nomenclature")
)
;
Masyvas. Add(Tipas( "DirectoryLink. Sandorio šalys")
)
;
TypeDescription= new TypeDescription(Array) ;
Res = EnterValue(Vertė, "Užuomina" , TipoAprašymas) ;
Ankstesni metodai leido atidaryti tik numatytąsias objektų formas (objekto formą arba pasirinkimo formą). Jei reikia atidaryti laisva forma, tada galite naudoti funkciją OpenForm ().
Ši funkcija turi nemažai parametrų. Pažvelkime į kai kuriuos iš jų:
- Formos pavadinimas- čia galite pasirinkti vieną iš standartinių objektų formų, pavyzdžiui, Atrankos forma arba Sąrašo forma. Arba tam tikra forma, kurią sukūrė kūrėjai.
- Galimybės— leidžia perkelti jį į formą formoje struktūros kai kuriuos parametrus prieš jį atidarydami, taip nustatydami išvesties duomenis. Parametrai gali būti bet kokie duomenys, kurie gali būti perduodami iš kliento į serverį. Parametrai, perduoti atidarant formą, gali būti apdorojami procedūroje WhenCreatingOnServer() atidaromoje formoje.
- Formos atidarymo režimas— turi 3 parinktis: nepriklausomas, blokuoti visą sąsają, blokuoti savininko formą.
Pažiūrėkime, kaip ši funkcija naudojama OpenForm()įvairiose situacijose.
3. Kaip atidaryti esamo objekto formą
Kiekviena forma turi vieną pagrindinį atributą. Formos detalių sąraše jis paryškinamas pusjuodžiu šriftu ir paprastai vadinamas Objektasžinynų ir dokumentų elementų formose. Kiti objektai gali turėti kitokį pavadinimą. Norėdami atidaryti esamo objekto formą, atidaromai formai turite perduoti parametrą Raktas su verte kaip nuoroda į objektą.
&OnClient
Procedūros komanda 1 (komanda)
Parametras = nauja struktūra;
Parametras. Insert("Raktas" , FindC() );
OpenForm(, parametras) ;
Procedūros pabaiga
&Serveryje
Funkcija FindC();
Grąžinti katalogus. Sandorio šalys. FindByRequisites ("TIN", "745107734623")
EndFunction
4. Kaip atidaryti naują objekto formą
Čia tiks paprasta funkcija OpenForm() be jokių parametrų.
&OnClient
Procedūros komanda 1 (komanda)
OpenForm( "Katalogas. Sandorio šalys. Objekto forma")
;
Procedūros pabaiga
5. Kaip atidaryti naują objekto formą ir ją užpildyti pagal ką nors
Turite perduoti parametrą Bazė, kurios reikšmė bus nuoroda į užpildymo pagrindinį objektą. Tai prasidės procedūra ProcessFill ().
&OnClient
Procedūros komanda 1 (komanda)
Parametras = nauja struktūra;
Parametras. Insert("Base", LinkToBuyerAccount) ;
OpenForm( "Dokumentas. Prekių ir paslaugų pardavimas. Objekto forma", Parametras) ;
Procedūros pabaiga
Šis pavyzdys sukurs dokumentą Prekių ir paslaugų pardavimas ir pildoma pagal apmokėjimo pirkėjui sąskaitą faktūrą, į kurią buvo perduota nuoroda.
6. Kaip atidaryti formą ir nustatyti joje pasirinkimą
1C formų pasirinkimas gali būti paprastas arba sudėtingas. Paprastas pasirinkimas apima tokius posakius kaip Organizacija = Horns and Hooves LLC. Kompleksinė atranka apima kitus palyginimo būdus, pvz. Sąraše. Šiame straipsnyje mes apsvarstysime paprastos atrankos organizavimą, o atskiras straipsnis bus skirtas sudėtingam atrankai.
Norėdami organizuoti paprastą pasirinkimą, atidaromos formos raktu turite perduoti parametrą Pasirinkimas, reikšmė bus struktūra, kurios raktas yra dinaminio sąrašo lauko pavadinimas, o reikšmė yra ieškomi duomenys.
Pavyzdžiui, atidarykime katalogų sąrašo formą GTD numeriai ir ten pasirinkite savininko katalogo elementą Nomenklatūra.
&OnClient
Procedūros komanda 1 (komanda)
Parametras = nauja struktūra;
atranka= nauja Struktūra;
Pasirinkimas. Insert("Savininkas", LinkToNomenclature) ;
Parametras. Insert("Pasirinkimas", Pasirinkimas) ;
OpenForm( "Katalogas. GTD numeriai. Sąrašo forma", Parametras) ;
Procedūros pabaiga
7. Kaip atsidaryti informacijos registro įvedimo formą
Norėdami tai padaryti, jums reikės informacijos registro įvedimo rakto.
Įrašymo raktas— tai visų matavimų ir laikotarpio reikšmės (jei registras periodiškas). Tai yra, įrašo raktas yra parametrai, pagal kuriuos įrašas gali būti unikaliai identifikuojamas.
Atidarymo algoritmas yra toks:
- Į struktūrą įvedame įrašo rakto duomenis su reikiamomis reikšmėmis.
- Gautą struktūrą dedame į masyvą.
- Iš masyvo sukuriame įrašo raktą.
- Atsidariusiai formai perduodame parametrą Raktas kaip reikšmę naudodami įrašymo raktą nuo 3 veiksmo.
&OnClient
Procedūros komanda 1 (komanda)
Parametras = nauja struktūra;
KeyParameters= nauja struktūra;
Pagrindiniai parametrai. Insert("Nomenklatūra", NuorodaToNomenklatūra) ;
Pagrindiniai parametrai. Insert("Kainos tipas", NuorodaKainos tipas) ;
Pagrindiniai parametrai. Insert("Laikotarpis", Data) ;
KeyArray = naujas masyvas;
KeyArray. Add(KeyParameters) ;
EntryKey = Naujas( „Informacijos registro įrašo raktas.Kainų nomenklatūra“, KeyArray);
Parametras. Insert("Key", RecordKey) ;
OpenForm( "Informacijos registras. Nomenklatūros kainos. Įrašo forma", Parametras) ;
Procedūros pabaiga
Kaip atidaryti esamo objekto formą?
Atidarydami esamo objekto formą, be formos pavadinimo, turite nurodyti ir objektą, kurio forma turi būti atidaryta. Norėdami tai padaryti, naudokite rakto formos parametrą ir nuorodą į mus dominantį objektą.
Pavyzdžiui, jei iš organizacijų sąrašo formos reikia atidaryti organizacijos, kurioje yra žymeklis, formą, tai galite padaryti tokiu būdu:
Formos parametrus perduodame struktūros pavidalu, kur struktūros elemento pavadinimas atitinka formos parametro pavadinimą, o reikšmė yra reikšmė, kuriai norime nustatyti formos parametrą.
Jei norite atidaryti ne pagrindinę, o savavališką konfigūravimo priemonėje sukurto objekto formą, o ne standartinį pagrindinės formos pavadinimą (ObjectForm), nurodykite žodį Form, po kurio eina taškas - formos, sukurtos konfigūratorius.
Pavyzdžiui:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = New Structure("Raktas", ReferenceToDirectoryElement); OpenForm("Katalogas.Organizacijos.Forma.UniversalObjectForm",FormParameters);
Pažymėtina, kad tuo atveju, kai, be nuorodos į objektą, atidaromai formai nereikia perduoti parametrų, o reikalinga pagrindinė esamo objekto forma, galite naudoti paprastesnį būdą - atidarykite formą naudodami procedūrą OpenValue():
OpenValue(Items.List.CurrentRow);
Šis metodas yra mažiau universalus, tačiau kai kuriais atvejais sutaupo laiko ir pastangų. Pavyzdžiui, nagrinėjamu atveju viena tokia eilutė gali pakeisti visą trijų eilučių procedūrą, kurią rašėme anksčiau.
Tačiau naudojant šią procedūrą reikia būti atsargiems. Kai kuriais atvejais tai gali sukelti papildomų skambučių į serverį, pavyzdžiui, kai reikia atidaryti hierarchinio katalogo elemento formą. Naudodama šią procedūrą, platforma atliks papildomą skambutį serveriui, kad nustatytų, ar elementas yra grupė, ar ne, nes elementui ir grupei turi būti atidarytos skirtingos formos.
Tuo pačiu metu ši informacija gali būti iš anksto žinoma kūrėjui pagal jo algoritmą, o naudojant OpenForm() funkciją, kūrėjas gali atidaryti norimą formą be papildomų skambučių į serverį, iš karto nurodydamas standartinį pagrindinio pavadinimo pavadinimą. forma.