1c i utvalgsparametrene, angi gruppenavnet. Angi utvalgsparametere og utvalgsparametertilknytninger for metadataobjekter. DescriptionofTypesInventory = NewDescriptionofTypes(Array)

For å åpne utvalgsskjemaet med utvalg i 1s 8.2(vanlige former), må vi utføre noen handlinger. Vi får det først. Etter det setter vi valget og åpner det programmatisk, her er et kodeeksempel:

Utvalg på skjemaet i 1C 8.2-inndatafeltet med flere verdier

I eksemplet ovenfor så vi på hvordan du setter valg på utvalgsskjemaet etter spesifikk verdi. La oss nå se på en situasjon der du må erstatte flere verdier, dette kan for eksempel være en matrise eller avlastet fra et spørringsresultat. Dette er et utvalg i 1c-inntastingsfeltet med flere betydninger.

Først får vi valgskjemaet, sender "Element" (eier) i parametrene, setter valgmodusflagget. Deretter lager vi en liste over verdier og en matrise, vi merker at som et valg når du angir type sammenligning i listen, kan et objekt bare være tilstede med typen Listeverdier. Vi legger til elementer i matrisen, og laster deretter denne matrisen inn i listen over verdier, som vi deretter angir i utvalget. Ikke glem å aktivere flagget for bruk av dette valget og angi sammenligningstype.

Sette valg i inntastingsfeltet på skjemaet i 1C 8.3, Start of Selection-hendelse

La oss nå vurdere valg i inntastingsfeltet på i en overkommelig form i 1C 8.3. La oss finne på skjemaet elementet vi er interessert i, der vi vil angi utvalget, i vårt tilfelle er dette feltet "Organisasjon". Vi finner arrangementet «Start of Selection», klikker på forstørrelsesglasset og finner oss selv i prosedyren. Vi ser parameteren Selection Data; denne parameteren er av typen ValueList. For å begrense utvalget til de nødvendige elementene, må vi fylle ut listen over verdier. Vi kan velge elementer kun på serveren, så vi lager en prosedyre med &OnServer-kompileringsdirektivet. I denne prosedyren fyller du inn utvalgsdata.

/
Utviklere /
Kodekonvensjoner

Angi utvalgsalternativer og valgalternativtilknytninger for metadataobjekter

1. Som regel må forretningslogikkrestriksjoner som for eksempel utvalgsrestriksjoner være de samme for alle former der et bestemt objekt redigeres. Derfor anbefales det å angi utvalgsparametere og forbindelser mellom utvalgsparametere i egenskapene til metadataobjekter - i detaljene i kataloger, dokumenter, etc.

2. Det kan imidlertid være tilfeller der valgrestriksjonene kan avhenge av det spesifikke driftsscenarioet. I slike tilfeller kan valgparameterne spesifiseres lokalt, i en bestemt form.

For eksempel inneholder konfigurasjonen

  • katalog Ansatte, som inneholder detaljer Organisasjon Og Type ansatt(oppregning med verdier Grunnleggende/Deltid);
  • dokument Mottaksbestilling, som inneholder rekvisitter Organisasjon Og Ansatt; mens for rekvisittene Ansatt dokument Mottaksbestilling valgparametertilkobling er spesifisert Utvalg.Organisasjon med rekvisitter Organisasjon.

Det kreves å implementere muligheten til å velge kun nøkkelmedarbeidere avhengig av verdien av det funksjonelle alternativet Velg Kun Fra Ansatte Grunnleggende. For dette er det nødvendig

  • i form av et dokument Mottaksbestilling implementere ytterligere skjemaattributter Typer ansatte,
  • deretter for skjemafeltet Ansatt en valgparameterkobling kan opprettes Utvalg.Type ansatt med skjemadetaljer Typer ansatte,
  • i dette tilfellet skjemadetaljene Typer ansatte fylt ut basert på analysen av det funksjonelle alternativet.

(Samtidig, still inn for rekvisittene Ansatt dokument Mottaksbestilling lenke for valgparameter Utvalg.Type ansatt det er ingen mulighet, fordi Rekvisitter Type ansatt i dokumentet Mottaksbestilling eksisterer ikke.)

Still deretter inn tilkoblingen for parameteren Utvalg.Organisasjon i rekvisittegenskaper Ansatt dokument Mottaksbestilling og tilkoblinger for parameteren Utvalg.Type ansatt i dokumentskjemafeltet Mottaksbestilling vil føre til at i modusen 1C:Bedrifter Begge valgparameterkoblingene vil fungere. Når du velger en ansatt i ansettelsesbestillingsskjemaet, vil valget i listen over ansatte bli bestemt både av organisasjonen som er fylt ut i dokumentet og av typen ansatt, som vil bli bestemt basert på det funksjonelle alternativet.

God ettermiddag.

I dag skal vi snakke om hvordan du programmatisk åpner utvalgsskjemaer i det nye administrerte grensesnittet.

Tidligere i " vanlig søknad"Vi skrev slik:

form = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Mellom disse operatorene kan vi endre egenskapene til skjemaet, for eksempel angi utvalget. Vi kan spesifisere en bestemt form ved navn. Kunne endret det utseende, få tilgang til skjemaelementegenskapene ved navn gjennom en prikk (form.Button1.Visibility = False;)

Nå har vi et administrert grensesnitt og alt er annerledes her. Problemet er å dele koden inn i server- og klientdeler. Vi har tilgang til objekter og deres metadata kun på serveren, og vi må åpne skjemaer på klienten.

Så la oss komme i gang.

1. Det enkleste tilfellet er når vi ikke trenger å administrere utvalget (sette opp valg, sende parametere til det åpnede utvalgsskjemaet).

Siden skjemaer kun kan åpnes på klienten, vil dette være en kodebit på klientsiden. Vi vil bruke funksjonen EnterValue(<Значение>, <Подсказка>, <Тип>) . Faktisk er alt klart fra beskrivelsen hennes. Den returnerer flagget for om brukeren har foretatt et valg; i den første parameteren sender vi beholderen som utvalgsverdien skal returneres til, i den andre teksten som vises i tittelen på valgvinduet, i den tredje matrisen med typer.

Her er et eksempel på bruk:

Variabel SelectTMC;

ArrayTypes = New Array;

DescriptionofTypesTMC = NewDescriptionofTypes(Array);

Hvis EnterValue(Velg inventar, "Velg vare", beskrivelse av inventartyper)

//Behandler den valgte verdien

slutt om;

Jeg vil legge til at hvis vi tildeler en verdi til containervariabelen vår før vi velger den, vil den være standardverdien. I dette tilfellet trenger du ikke å danne en rekke typer; typen vil bli hentet fra verdien i beholderen.

2. Noen ganger, før vi velger en verdi, må vi angi noen valg og utvalgsparametere. For eksempel må vi velge en motpartsavtale. Den første metoden vil åpne alle dokumentene for oss, men vi må velge etter eier.

Det er to metoder for å åpne skjemaer: OpenForm Og OpenFormModal. I den første metoden vil vi åpne skjemaet og kodebiten som vi åpnet skjemaet fra vil fortsette å kjøre uten å motta resultatet av valget. Utvelgelsesresultatet, avhengig av anropsmetoden, vil bli plassert enten i inntastingsfeltet eller mottatt i den forhåndsdefinerte prosedyren "Seleksjonsbehandling".

I vårt tilfelle må vi få den valgte verdien inn i en bestemt variabel og fortsette behandlingen under hensyntagen til den valgte verdien, uten å overføre kontroll til andre prosedyrer. Derfor vil det passe oss OpenFormModal.

Jeg tar umiddelbart forbehold om at dette er en dårlig måte for et nettgrensesnitt, fordi... Modale vinduer åpnes i et nytt nettleservindu som vanligvis er blokkert. Men hvis du forklarer brukeren på forhånd hva som er hva, så tror jeg han vil takle dette problemet))

Så, la oss se på beskrivelsen av prosedyren, den har 4 parametere. I den første angir vi en linje med hele banen til skjemaet "Katalog. Kontrakter med entreprenører. Utvalgsskjema". I den andre angir vi utvalgsparametrene, mer om dem nedenfor. I den tredje - eieren, dette er et skjema eller et utvalgsfelt som vil motta resultatet av utvalget, vi fyller det ikke ut. Den fjerde parameteren brukes heller ikke i vårt tilfelle.

Så, for et enkelt valg, vil følgende linje gjøre:

&På klient

Prosedyre Kommando1 (Kommando)

res = OpenFormModal("Katalog. Kontrakter til kontraktører. Utvalgsskjema");

Slutt på prosedyre

Men dette er en komplett analog av metode nr. 1, og vi vil se et skjema for valg av alle kontrakter, uten å velge etter eier. De. Dette kan kun gjøres dersom vi ønsker å spesifisere navnet på utvalgsskjemaet.

For å angi valget, vil den andre parameteren hjelpe oss.

Den andre parameteren er av typen "Struktur". Som strukturelementer kan du spesifisere skjemaparametere lagt til på "parametere"-fanen i valgskjemaet. Behandlingen deres bør beskrives i prosedyren Når CreatedOnServer i valgskjemamodulen. Dette er ikke bra for oss, fordi... Jeg må endre konfigurasjonen. Du kan også sende en utvalgsstruktur med "selection"-tasten i parameterstrukturen. Da vil alle felt fra utvalgsstrukturen bli brukt til å velge elementlisten og vil ikke være tilgjengelig for brukeren verken for visning eller endring.

I mitt eksempel tegnet jeg et utvalgsfelt i behandlingen som refererer til behandlingsskjemaattributtet "motpart" med datatype " DirectoryLink.Motparter". og skrev følgende kodebit:

&På klient

Prosedyre Kommando1 (Kommando)

Valg = Ny struktur("Eier", motpart);

SelectionParameters = New Structure("Utvalg", Utvalg);

res = OpenFormModal("Katalog. Kontrakter for entreprenører. Utvalgsskjema", Utvalgsparametere);

Slutt på prosedyre

Dette er vanligvis nok til å løse de fleste problemer og krever ingen konfigurasjonsintervensjon. Men i valgskjemaet i prosedyren "When CreatedOnServer", kan valget ditt gå tapt. Derfor, før du bruker denne metoden, bør du se gjennom denne prosedyren i valgskjemaet du åpner. Skjeve utviklere der kan enkelt stille inn valget sitt "som standard", og glemmer å sjekke at valget er bestått i åpningsparameterne.

Det var alt for i dag, takk for oppmerksomheten.




Topp