Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • shtëpi
  • Në kontakt me
  • 1c përzgjedhja në formularin e përzgjedhjes. Si të hapni një formular liste me disa përzgjedhje? TypeArray = Array i ri

1c përzgjedhja në formularin e përzgjedhjes. Si të hapni një formular liste me disa përzgjedhje? TypeArray = Array i ri

Hapja programatike e formularëve në një aplikacion të menaxhuar 1C është dukshëm i ndryshëm nga hapja e tyre në një aplikacion të rregullt. Le të shohim së pari metodën e vjetër. Ai konsiston në marrjen e një formulari dhe më pas hapjen e tij në modalitetin normal ose modal (kur hapet në modalitet, forma bllokon programin).

GetForm(). Hapur ()

Kjo është metoda më e ngadaltë e hapjes së formularëve. Megjithatë, ju lejon të përpunoni në mënyrë programore formularin përpara se ta hapni atë. Për të përpunuar kodin, duhet të ndryshoni pak:

Formulari = GetForm( "Dokument. Pranimi i Mallrave dhe Shërbimeve. Formulari i Dokumentit") ;
//Këtu kryejmë veprime me formularin
Forma. Open();

Duhet pasur parasysh që kur të merret formulari, do të ekzekutohet një procedurë tjetër e ngjarjes WhenCreatedOnServer.

Le të shohim metoda të tjera që ju lejojnë të hapni formularët në një aplikacion të menaxhuar 1C më shpejt dhe më lehtë. Në varësi të situatës specifike, mund të përdoren metoda të ndryshme.

1. Si të hapni një formular objekti në një aplikacion të menaxhuar nëse ka një lidhje me të.

Në këtë rast, gjithçka është jashtëzakonisht e thjeshtë.

RefLink = Drejtoritë. Nomenklatura. FindByCode("000000001");
OpenValue (RefLink);

2. Si të hapni formularin e përzgjedhjes dhe më pas të merrni vlerën e zgjedhur.

Ekziston një funksion për këtë EnterValue (). Funksioni ka 3 parametra:

  • Variabla në të cilën do të shkruhet vlera e zgjedhur;
  • Një aluzion që do të shfaqet në dritaren e përzgjedhjes;
  • Përshkrimi i llojeve të vlerave të zgjedhura. Mund të ketë disa lloje, në të cilin rast do t'ju kërkohet të zgjidhni një lloj përpara se të zgjidhni një vlerë specifike.

Si rezultat i ekzekutimit të funksionit, do të hapet formulari i përzgjedhjes së paracaktuar për një objekt të llojit të specifikuar.

Vlera e ndryshueshme;
Array= Array i ri;
Array. Shto(Lloji( "DirectoryLink.Nomenklatura") ) ;
Array. Shto(Lloji( "DirectoryLink. Kundërpartitë") ) ;

TypeDescription= new TypeDescription(Array) ;

Res = EnterValue(Vlera, "Hint" , TypeDescription) ;

Metodat e mëparshme ju lejonin vetëm të hapni format e paracaktuara për objektet (forma e objektit ose formulari i përzgjedhjes). Nëse keni nevojë të hapni një formular të personalizuar, mund të përdorni funksionin OpenForm().

Ky funksion ka mjaft parametra. Le të shohim disa prej tyre:

  • Emri i formularit— këtu mund të zgjidhni një nga format standarde të objektit, për shembull, Formulari i përzgjedhjes ose Formulari i listës. Ose një formë specifike e krijuar nga zhvilluesit.
  • Opsione— ju lejon ta transferoni atë në formularin në formular strukturat disa parametra para hapjes së tij, duke përcaktuar kështu të dhënat dalëse. Parametrat mund të jenë çdo e dhënë që mund të kalohet nga klienti në server. Parametrat e kaluar gjatë hapjes së formularit mund të përpunohen në procedurë WhenCreatingOnServer() në formularin që hapet.
  • Mënyra e hapjes së formularit— ka 3 opsione: i pavarur, bllokimi i të gjithë ndërfaqes, bllokimi i formularit të pronarit.

Le të shohim se si përdoret funksioni OpenForm() në situata të ndryshme.

3. Si të hapet forma e një objekti ekzistues

Çdo formë ka një atribut kyç. Ai theksohet me shkronja të zeza në listën e detajeve të formularit dhe zakonisht quhet Nje objekt në trajtat e elementeve të librave referues dhe dokumenteve. Objektet e tjera mund të kenë një emër tjetër. Për të hapur një formë të një objekti ekzistues, duhet të kaloni një parametër në formularin që hapet Celës me vlerën si referencë për një objekt.

&OnClient
Komanda e procedurës 1 (Komanda)
Parametri= strukturë e re;
Parametri. Insert("Key" , FindC() );
OpenForm(, Parametri);
Fundi i procedurës

&Në server
Funksioni FindC();
Drejtoritë e Kthimit. Kundërpalët. FindByRequisites ("TIN", "745107734623")
Funksioni i Fundit

4. Si të hapni një formular të ri objekti

Një funksion i thjeshtë do të bëhet këtu OpenForm() pa asnjë parametër.

&OnClient
Komanda e procedurës 1 (Komanda)
OpenForm( "Drejtoria. Kundërpalët. Formulari i objektit") ;
Fundi i procedurës

5. Si të hapni një formular të ri objekti dhe ta plotësoni atë bazuar në diçka

Ju duhet të kaloni një parametër Baza, vlera e së cilës do të jetë një referencë për objektin bazë të mbushjes. Kjo do të fillojë procedurën ProcessFill().

&OnClient
Komanda e procedurës 1 (Komanda)
Parametri= strukturë e re;
Parametri. Fut ("Baza", Llogaria LinkToBler) ;
OpenForm( "Dokument. Shitjet e Mallrave dhe Shërbimeve. Formulari i Objektit", Parametri);
Fundi i procedurës

Ky shembull do të krijojë një dokument Shitjet e mallrave dhe shërbimeve dhe plotësohet në bazë të një faturë për pagesë ndaj blerësit, lidhja në të cilën është transmetuar.

6. Si të hapni një formular dhe të vendosni një përzgjedhje në të

Përzgjedhja në format 1C mund të jetë e thjeshtë ose komplekse. Përzgjedhja e thjeshtë përfshin shprehje si Organizata = Horns and Hooves LLC. Përzgjedhja komplekse përfshin lloje të tjera krahasimi, p.sh. Në listë. Në këtë artikull do të shqyrtojmë organizimin e përzgjedhjes së thjeshtë, dhe një artikull i veçantë do t'i kushtohet përzgjedhjes komplekse.

Për të organizuar një përzgjedhje të thjeshtë, duhet të kaloni një parametër me një çelës në formularin që hapet Përzgjedhja, vlera do të jetë një strukturë në të cilën çelësi është emri i fushës së listës dinamike dhe vlera është të dhënat që kërkohen.

Për shembull, le të hapim formularin e listës së drejtorive Numrat GTD dhe bëni një përzgjedhje atje sipas elementit të pronarit - drejtorisë Nomenklatura.

&OnClient
Komanda e procedurës 1 (Komanda)
Parametri= strukturë e re;

Përzgjedhja= Struktura e re;
Përzgjedhja. Insert("Owner", LinkToNomenklature) ;

Parametri. Insert("Zgjedhja", Përzgjedhja) ;

OpenForm( "Direktori. Numrat GTD. Formulari i listës", Parametri);
Fundi i procedurës

7. Si të hapet formulari i regjistrimit të regjistrit të informacionit

Për ta bërë këtë, do t'ju duhet çelësi i regjistrimit të regjistrit të informacionit.

Çelësi i regjistrimit- këto janë vlerat e të gjitha matjeve dhe periudha (nëse regjistri është periodik). Kjo do të thotë, një çelës regjistrimi është parametri me të cilin një rekord mund të identifikohet në mënyrë unike.

Algoritmi i hapjes është si më poshtë:

  1. Ne futim të dhënat kryesore të regjistrimit me vlerat e nevojshme në strukturë.
  2. Ne vendosim strukturën që rezulton në një grup.
  3. Ne krijojmë një çelës regjistrimi nga grupi.
  4. Ne kalojmë një parametër në formularin që hapet Celës me çelësin e regjistrimit nga hapi 3 si vlerë.

&OnClient
Komanda e procedurës 1 (Komanda)
Parametri= strukturë e re;

KeyParameters= Struktura e re;
Parametrat kyç. Insert("Nomenklatura", LinkToNomenklatura) ;
Parametrat kyç. Insert("PriceType", LinkToPriceType) ;
Parametrat kyç. Insert("Periudha", Data);

KeyArray = Array i ri;
KeyArray. Shto (Parametrat kyçe) ;

EntryKey = E re( "Çelësi i regjistrimit të informacionit. Nomenklatura e çmimeve", KeyArray);

Parametri. Insert("Key", Record Key) ;

OpenForm( "Regjistri i informacionit. Çmimet e nomenklaturës. Formulari i regjistrimit", Parametri);
Fundi i procedurës

Si të hapni një formular liste me disa përzgjedhje?

Ka disa mënyra për të hapur një formular liste me disa përzgjedhje të paracaktuara. Le t'i shikojmë ato me radhë:

1. Metoda e parë është që kur hapni formularin, mund të vendosni parametrin e formularit Selection, dhe të hapni formularin e listës me këtë parametër. Parametri Selection paraqet strukturën. Emrat e elementeve korrespondojnë me emrat e fushave me të cilat bëhet përzgjedhja, dhe vlerat përmbajnë vlerat e përzgjedhjes. Ky është një opsion i zgjerimit të formularit të menaxhuar dinamik të listës. Kjo do të thotë, ekziston për forma atributi kryesor i të cilave është atributi tip Lista dinamike, të tilla si formularët e listës dhe format e përzgjedhjes.

Gjatë hapjes së formularit, zgjedhja do të bëhet në bazë të fushës së specifikuar. Për shembull, në shembullin e mëposhtëm, hapet një listë faturash me përzgjedhje nga fusha Number, e barabartë me 333.

Vlera e përzgjedhjes = Struktura e re ("Numri", "333");

SelectionParameters = Struktura e re ("Selection", SelectionValue);

OpenForm ("Dokumenti. Faturë Fatura. Forma e Listës", Opsionet e Zgjedhjes);

2. Ju mund të hapni një formular liste pa parametra:

OpenForm ("Dokumenti.Faturë.Forma e Listës");

Dhe më pas, në trajtuesin e ngjarjeve të formularit të listës së faturave Kur KrijohetOnServer shkruani kodin që krijon një përzgjedhje në një listë dinamike, e cila është atributi kryesor i formës:

&Në server

Procedura kur krijohet në server (Dështim, përpunim standard)

Elementi i përzgjedhjes = List.Selection.Elements.Add(Type("DataComposition Selection Element"));

SelectionElement.LeftValue = NewDataCompositionField("Numri");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.I paarritshëm;

SelectionElement.RightValue = "000000001";

Fundi i procedurës

Përparësitë e kësaj metode janë se Lloji i Krahasimit për përzgjedhjen mund të vendoset jo vetëm E barabartë, si në rastin e parë, por edhe Më shumë, Më pak, etj.

Por kjo metodë ka gjithashtu një pengesë shumë domethënëse: me këtë përzgjedhje, forma do të hapet gjithmonë. Nga ku e thërrisnin. Prandaj, kjo formë nuk duhet të përcaktohet si kryesore. Dhe nëse, megjithatë, është kryesori, atëherë para se të instaloni përzgjedhjen, është e nevojshme të sigurohet një lloj analize se nga hapet kjo formë. Për shembull, analizimi i parametrave të formës.

3. Së fundi, kushti i përzgjedhjes mund të vendoset në një pyetje të personalizuar që zgjedh të dhënat për një listë dinamike. Për shembull, duhet të hapim një listë faturash që përmbajnë artikullin e theksuar në listën e artikujve.

Për ta bërë këtë, në formën e një liste artikujsh, krijoni një komandë dhe një buton përkatës Faturat e pranimit.

Le të plotësojmë mbajtësin e ekzekutimit për këtë komandë si më poshtë:

&OnClient

Procedura e faturës së faturave (komandë)

ListForm = GetForm ("Dokument.Faturë.ListaForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Fundi i procedurës

Në këtë mbajtës, marrim formularin për listën e faturave dhe kalojmë lidhjen me artikullin aktual në listën e artikujve te parametri i formës FilterByProduct dhe hapim formularin me këtë parametër.

Pastaj do të krijojmë një formular të listës së dokumenteve Fatura e Blerjes dhe krijojmë atributin e formës FilterByProduct, të cilin do ta përdorim si parametër të formës kur ta hapim. Tani le të hapim paletën e vetive të atributit kryesor të formularit List. Le të vendosim flamurin Kërkesë me porosi dhe në linjë Vendosja e listës klikoni Open.

Në fushën Kërkesë, shkruani tekstin e mëposhtëm të kërkesës:

ZGJIDHNI

Numri i faturës së dokumentit,

Fatura e Pranimit të Dokumentit.Data

NGA

Dokumenti.Fatura e pranimit AS Dokumenti i pranimitFaturë

KU

Fatura e Faturës së Dokumentit.Produktet.Produkti = &Produkti

Në kërkesë, ne përdorim parametrin Item, i cili do të marrë një lidhje me rreshtin aktual në listën e artikujve, të përfshirë në parametrin e formularit të listës së faturave FilterBy Item. Për ta bërë këtë, në mbajtësin e ngjarjeve të formës së listës OnOpen, ne do të shkruajmë kodin për të vendosur vlerën e parametrit të kërkesës për Produkt:

&OnClient

Procedura e hapjes (Dështim)

List.Parameters.SetParameterValue("Produkt", FilterByProduct);

Fundi i procedurës

Këtu Lista.Opsionetështë një listë e parametrave të kërkesës dinamike të listës për atributin List. Vlera e parametrit Product vendoset e barabartë me vlerën e parametrit të formularit FilterByProduct.

Si rezultat, me klikimin e një butoni Faturat e pranimit në formën e një liste artikujsh, do të marrim një listë vetëm me ato fatura që përmbajnë artikullin e përzgjedhur aktualisht në listën e artikujve.

Një shembull demonstrues për opsionin e 3-të ndodhet në direktorinë 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Shembulli u krye në versionin e platformës 8.2.9.356.

Ky kod ju lejon të hapni një listë dokumentesh me një përzgjedhje të caktuar, gjithashtu mund të hapni një listë të elementeve të drejtorisë me përzgjedhjen e dëshiruar

Kodi 1C v 8.2 Formulari UP = OpenForm("Dokument. Faturë.Form.ListaForm"); //Hap formularin
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //Shto përzgjedhjen
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //Si do të krahasojmë
SelectOwner.Use = E vërtetë; // Vendos kutinë e kontrollit për përdorimin e NewDataCompositionField ("Nomenklatura")
SelectionOwner.LeftValue = NewDataCompositionField("Llogaria"); //Cilat detaje do të përdorim për të bërë përzgjedhjen?
SelectionOwner.RightValue = Objekti.Llogaria; // Dhe vetë kuptimi i përzgjedhjes

Në mënyrë që hapni një formë liste me një përzgjedhje të paracaktuar përdorni metodat e mëposhtme:

Mënyra e parëështë se kur hapni një formular, mund të vendosni parametrin Forma e përzgjedhjes dhe të hapni formularin e listës me këtë parametër.

Parametri Selection paraqet strukturën. Emrat e elementeve korrespondojnë me emrat e fushave me të cilat bëhet përzgjedhja, dhe vlerat përmbajnë vlerat e përzgjedhjes. Ky është një opsion i zgjerimit të formularit të menaxhuar dinamik të listës. Kjo do të thotë, ekziston për format, atributi kryesor i të cilave është një atribut i tipit DynamicList, për shembull, për format e listave dhe format e përzgjedhjes.

Për shembull, në shembullin e mëposhtëm, hapet një listë faturash me përzgjedhje nga fusha Number, e barabartë me 333.

Kodi 1C v 8.2 Vlera e përzgjedhjes UE = Struktura e re ("Numri", "333");
SelectionParameters = Struktura e re ("Selection", SelectionValue);
OpenForm ("Dokumenti. Faturë Fatura. Forma e Listës", Opsionet e Zgjedhjes);

Mënyra e dytë

Ju mund të hapni një formë liste pa parametra:

Kodi 1C v 8.2 UE OpenForm ("Dokumenti. Formulari i faturës së faturës. Listës");

Dhe më pas, në trajtuesin e ngjarjeve të formularit për listën e faturave Kur CreatedOnServer, shkruani kodin që krijon një përzgjedhje në listën dinamike, e cila është atributi kryesor i formularit:

Kodi 1C v 8.2 UP &OnServer
Procedura kur krijohet në server (Dështim, përpunim standard)
Elementi i përzgjedhjes = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Numri");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.I paarritshëm;
SelectionElement.RightValue = "000000001";
Fundi i procedurës

Përparësitë e kësaj metode janë se Lloji i Krahasimit për përzgjedhjen mund të vendoset jo vetëm në Equal, si në rastin e parë, por edhe në Më shumë, Më pak, etj.

Por kjo metodë ka gjithashtu një pengesë shumë domethënëse: me këtë përzgjedhje, forma do të hapet gjithmonë. Nga ku e thërrisnin. Prandaj, kjo formë nuk duhet të përcaktohet si kryesore. Dhe nëse, megjithatë, është kryesori, atëherë para se të instaloni përzgjedhjen është e nevojshme të jepni një lloj analize se nga hapet kjo formë. Për shembull, analizimi i parametrave të formës.

Mënyra e tretë

Së fundi, kushti i përzgjedhjes mund të vendoset në një pyetje të personalizuar që zgjedh të dhënat për një listë dinamike.

Për shembull, duhet të hapim një listë faturash që përmbajnë artikullin e theksuar në listën e artikujve.

Për ta bërë këtë, në formën e një liste artikujsh, krijoni një komandë dhe butonin përkatës Marrja e faturave.

Le të plotësojmë mbajtësin e ekzekutimit për këtë komandë si më poshtë:

Kodi 1C v 8.2 UP & OnClient
Procedura e faturës së faturave (komandë)
SelectionParameters = Strukturë e re ("FilterByProduct", Elements.List.CurrentRow);
OpenForm ("Dokumenti. Faturë Fatura. Forma e Listës", Opsionet e Zgjedhjes);
Fundi i procedurës

Në këtë mbajtës, ne hapim formularin për listën e faturave, duke kaluar një lidhje me artikullin aktual në listën e artikujve te parametri i formularit FilterByProduct.

Më pas do të krijojmë një formular për listën e dokumenteve: Faturën e Faturës dhe do të krijojmë një parametër të formularit FilterBy Product, të cilin do ta përdorim për të hapur një formular me përzgjedhjen e kërkuar.

Tani le të hapim paletën e vetive të atributit kryesor të formularit List. Vendosni flamurin e pyetjes së personalizuar dhe në rreshtin Cilësimet e listës kliko Open.

Në fushën Kërkesë, shkruani tekstin e mëposhtëm të kërkesës:

Kodi 1C v 8.2 ZGJIDHJE UP
Numri i faturës së dokumentit,
Fatura e marrjes së dokumentit.Data
NGA
Dokumenti.Fatura e pranimit AS Dokumenti i pranimitFaturë
KU
Fatura e Faturës së Dokumentit.Produktet.Produkti = &Produkti

Në kërkesë, ne përdorim parametrin Item, i cili do të marrë një lidhje me rreshtin aktual në listën e artikujve, të përfshirë në parametrin e formularit të listës së faturave FilterBy Item.

Për ta bërë këtë, në trajtuesin e ngjarjeve të formës së listës Kur CreatedOnServer, ne do të shkruajmë kodin për të vendosur vlerën e parametrit të kërkesës së produktit:

Kodi 1C v 8.2 UP & OnClient
Procedura e hapjes (Dështim)
List.Parameters.SetParameterValue("Produkt", Parametrat.FilterByProduct);
Fundi i procedurës

Këtu List.Parameters është një listë e parametrave të kërkesës dinamike të listës për atributin List. Vlera e parametrit Product vendoset e barabartë me vlerën e parametrit të formularit FilterByProduct.

Si rezultat, duke klikuar butonin Pranimi i faturave në formularin e listës së artikujve, do të marrim një listë vetëm me ato fatura që përmbajnë artikullin e përzgjedhur aktualisht në listën e artikujve.

Në mënyrë që hapni formularin e përzgjedhjes me përzgjedhje në 1s 8.2(forma të rregullta), duhet të kryejmë disa veprime. Ne do ta marrim atë së pari. Pas kësaj, ne do të vendosim përzgjedhjen dhe do ta hapim atë në mënyrë programore, këtu është një shembull kodi:

Zgjedhja në formular në fushën e hyrjes 1C 8.2 me disa vlera

Në shembullin e mësipërm që pamë si të vendosni përzgjedhjen në formularin e përzgjedhjes sipas vlerës specifike. Tani le të shohim një situatë ku duhet të zëvendësoni disa vlera, kjo mund të jetë, për shembull, një grup ose i shkarkuar nga një rezultat pyetësor. Kjo është një përzgjedhje në fushën e hyrjes 1c me kuptime të shumta.

Së pari, marrim formularin e përzgjedhjes, kalojmë "Elementin" (pronarin) në parametrat, vendosim flamurin e modalitetit të përzgjedhjes. Pastaj krijojmë një listë vlerash dhe një grup, vërejmë se si përzgjedhje kur vendosim llojin e krahasimit në listë, një objekt mund të jetë i pranishëm vetëm me llojin ListVlerat. Shtojmë elementë në grup, pastaj e ngarkojmë këtë grup në Listën e Vlerave, të cilën më pas e vendosëm në përzgjedhje. Gjithashtu, mos harroni të aktivizoni flamurin për përdorimin e kësaj përzgjedhjeje dhe të vendosni Llojin e Krahasimit.

Vendosja e zgjedhjes në fushën e hyrjes në formularin në 1C 8.3, ngjarja e fillimit të përzgjedhjes

Tani le të shqyrtojmë përzgjedhja në fushën e hyrjes në një formular të menaxhuar në 1C 8.3. Le të gjejmë në formular elementin që na intereson, në të cilin do të vendosim përzgjedhjen, në rastin tonë kjo është fusha "Organizimi". Gjejmë ngjarjen “Fillimi i Përzgjedhjes”, klikojmë në xham zmadhues dhe gjendemi në procedurë. Ne shohim parametrin Selection Data, ky parametër është i llojit ValueList. Për të kufizuar përzgjedhjen në elementët e nevojshëm, duhet të plotësojmë Listën e Vlerave. Ne mund të zgjedhim elementë vetëm në server, kështu që krijojmë një procedurë me direktivën e kompilimit &OnServer. Në këtë procedurë, plotësoni të dhënat e përzgjedhjes.

Artikujt më të mirë mbi këtë temë