1c sette opp en dynamisk liste av brukeren. Måter å hente og bufre data med en dynamisk liste

Hjem For nybegynnerutviklere Lære å programmere

Det er et skjema som inneholder en dynamisk liste med en vilkårlig forespørsel. Hvordan stille inn de nødvendige parameterne i denne forespørselen når du åpner et skjema?

Et av problemene som oppstår ved åpning av et skjema kan være at en dynamisk liste i det åpnede skjemaet inneholder en vilkårlig spørring med parametere. Og når du åpner et slikt skjema, må du overføre spesifikke parameterverdier til denne listen.

Denne oppgaven løses ved å opprette flere skjemaparametere, sende de nødvendige verdiene til dem og sette dem til forespørselsparameterne i skjemahendelsesbehandleren. OnCreateAtServer.

Anta at du har et vareprisregister. Listeformen til dette registeret inneholder en dynamisk liste med en vilkårlig forespørsel:

VELG Informasjon Register Varepriser.Periode, Informasjonsregister Priser på varer.Produkt, Informasjonsregister Priser på varer.Pris FRA Informasjonsregister.Varepriser AS Informasjonsregister Varepriser HVOR Informasjonsregister Varepriser.Varepriser> & Informasjon og Begynnelse<= &КонецПериода

Som du kan se av forespørselsteksten, har forespørselen tre parametere: Product, PeriodStart og PeriodEnd. For at skjemaet skal fungere normalt, må verdiene til disse parameterne spesifiseres når skjemaet åpnes, ellers vil det bli mottatt en feil som følge av skjemaåpningen.

For å sende dine egne parametere til skjemaet, er det lurt å opprette dem i skjemaeditoren.

Generelt sett er dette ikke nødvendig. Alle parametere som sendes til OpenForm ()-funksjonen vil være tilgjengelige i skjemaets hendelsesbehandler OnCreateAtServer... Men det er fortsatt bedre å lage dem eksplisitt i skjemaet.

Da er det for det første ikke nødvendig å sjekke i skjemamodulen om slike parametere eksisterer eller ikke. Og for det andre gjør den eksplisitte opprettelsen av skjemaparametere det lettere å støtte den anvendte løsningen av de utviklerne som ikke var involvert i opprettelsen.

Så la oss lage tre parametere fort: BeginningPeriod, EndPeriod (type Dato) og Product (type) DirectoryRef.Products).

Nå, i form av en vare i varekatalogen, lag en kommando Priser i desember med følgende tekst:

Skjemaparametere = Ny struktur ("Periodebegynnelse, Periodeslutt, Produkt", "20121201000000", "20121231235959", Object.Link); OpenForm ("Informasjonsregister. Priser på varer. Form. Listeskjema", skjemaparametere);

Med denne kommandoen åpner vi iog sender verdiene til tre parametere til det.

I form av informasjonsregisteret, i skjemaets hendelsesbehandler OnCreateAtServer, la oss angi de beståtte verdiene som parametere for en vilkårlig forespørsel om en dynamisk liste som følger:

& AtServer-prosedyre OnCreateAtServer (Failure, StandardProcessing) List.Parameters.SetParameterValue ("PeriodStart", Parameters.PeriodStart); List.Parameters.SetParameterValue ("EndPeriod", Parameters.EndPeriod); List.Parameters.SetValueParameter ("Produkt", Parameters.Produkt); Slutt på prosedyre

Skriv ut (Ctrl + P)

Dynamisk liste

1. Generell informasjon

En dynamisk liste er en spesiell datatype som lar deg vise vilkårlig informasjon fra databasetabeller på et skjema. For å gjøre dette må du spesifisere tabellen du vil vise data fra, eller beskrive det resulterende utvalget på spørringsspråket.
Mekanismen er basert på datasammensetningssystemet og gir muligheter for sortering, filtrering, søking, gruppering og betinget formatering av de mottatte dataene. I dette tilfellet er datakilden en forespørsel, som enten genereres av systemet automatisk (basert på spesifiserte data), eller er skrevet av utvikleren manuelt.

Ris. 1. Alternativer for å lage en dynamisk liste

Når du lager et skjema rekvisitter som Dynamisk liste Utvikleren kan velge to måter å lage en spørring på dataene:
● Ved å spesifisere hovedtabellen - i dette tilfellet er det nok å bare indikere tabellen (hovedtabellegenskapen) som du vil motta data fra, og systemet vil automatisk danne en spørring til dataene (se høyre del i Figur 1).
● Manuell dannelse av en forespørsel - for dette må du angi egenskapen Vilkårlig forespørsel (se venstre del av fig. 1). Etter det vil manuell generering av en forespørsel om mottak av data fra infobasen være tilgjengelig.
Du kan bruke en spørring til å velge data fra flere tabeller, slik at du kan spesifisere hovedtabellen. Dette er nødvendig for at den dynamiske listen skal kunne bestemme hvilke data som er hoveddata og hvilke som er sekundære, og kan velge og vise informasjon korrekt, samt gi standardkommandoer. Men hvis det er umulig å bestemme hovedtabellen i spørringen, kan den utelates, men da
en dynamisk liste vil ikke gi kommandoer knyttet til hovedtabellen. I tillegg, i dette tilfellet (uten å spesifisere hovedtabellen), vil effektiviteten av datainnhenting av en dynamisk liste bli betydelig redusert.
For å forbedre ytelsen anbefales det at alle tilkoblinger som brukes i en vilkårlig spørring kun for å skaffe tilleggsdata, gjøres valgfrie ved å bruke spørringsspråkutvidelsen til datasammensetningssystemet.
For en dynamisk liste, som er hovedskjemaattributtet, er det mulig å sette filterverdier ved å bruke en skjemaparameter Utvalg... For dette er det nødvendig at navnet på strukturegenskapen, som er i parameteren Utvalg,
falt sammen med navnet på valgfeltet i den dynamiske listen. I dette tilfellet vil verdien til strukturegenskapen settes som riktig verdi for filterelementet. Hvis en matrise, en fast matrise eller en liste med verdier sendes som verdien til et element i parameteren Valg av dynamisk listeform, blir en betingelse med alternativet In List lagt til utvalget, til høyre verdien som listen over verdier er plassert (som arrayen og den faste arrayen konverteres til).
En spørring der en parameter brukes til å danne verdien til et felt, kan brukes som en vilkårlig spørring i en dynamisk liste, for eksempel:

PLUKKE UT
VALG
NÅR Levering Pris = 1 DA & Innlevering
ELLER Levering. Koeffisient
SLUTT SOM FORHOLD
FRA

Dessuten, hvis typen til parameterverdien er forskjellig fra typen objektattributt (f.eks. Rekvisitter 1 er av typen Nummer, og parameterverdien er typen Linje), så for riktig visning av feltet, bør du eksplisitt kaste parameterverdien til ønsket type:

PLUKKE UT
VALG
NÅR Frakt Pris = 1 SÅ EXPRESS (& Presentasjon AS linje (100)) ELLER Frakt. Koeffisient
SLUTT SOM FORHOLD
FRA
Document.DeliveryProducts AS Frakt

Hvis feltet, som utvalget er satt av, er deaktivert ved bruk av funksjonelle alternativer, blir ikke valget av dette feltet satt, selv om valgverdien sendes som skjemaparametere eller koblinger til utvalgsparametere.
Ved å bruke egenskapen Dynamic data read, indikeres en dynamisk liste over behovet for å lese data i små porsjoner
(for mer informasjon om metoder for å motta data med en dynamisk liste og databufring, se nedenfor). Uavhengig av denne funksjonen, gjelder følgende betingelser:

● Hvis visningen er satt til en hierarkisk liste, vil bare dataene til gjeldende gruppe og dataene til alle overordnede medlemmer (ingen underordnede medlemmer) bli lest.
● Hvis trevisningsmodus er satt, vil bare dataene til åpne trenoder bli lest.
● Engangslasting av dynamiske listedata støttes ikke hvis den hierarkiske visningen er satt (Visningsegenskapen er satt til Tre) og den innledende trevisningen er satt til Utvid alle nivåer. For å skaffe data vil det bli gjort like mange forespørsler til serveren som det er noder i den viste listen.
Innenfor en enkelt datainnhenting gjenbruker en dynamisk liste tidligere opprettede midlertidige tabeller hvis følgende betingelser er oppfylt:
● Listebatchforespørselen mangler forespørsler etter hovedpakkeforespørselen.
● Sammensetningen av midlertidige tabeller og felt i dem har ikke endret seg siden forrige kjøring av batch-spørringen.

I sitt arbeid bruker en dynamisk liste verdiene til følgende egenskaper til attributtene til metadataobjekter:
● format,
● redigeringsformat,
● hint,
● et tegn på å fremheve negative verdier,
● maske,
● tegn på flerlinjemodus,
● tegn på utvidet redigering,
● passordmodus.
Når du viser og redigerer utvalget og parameterne til datasammensetningssystemet, brukes redigeringsformatet til det tilsvarende feltet.

2. Begrensninger og funksjoner

Når du angir filtrering i en dynamisk liste, husk at filtrering ikke påvirker grupper hvis hierarkisk liste eller trevisningsmodus er valgt for den dynamiske listen. Med "grupper" menes et element i en katalog eller en plan av karakteristiske typer der EtoGroup-egenskapen er satt til True.
Valgene som automatisk brukes av den dynamiske listen på standardattributtene Eier, Foreldre, Dato, Periode og Denne Gruppe, brukes
standardmidler for datasammensetningssystemet. Valgene som automatisk brukes av den dynamiske listen til nøkkelfeltene, kan brukes både ved standard hjelp av datasammensetningssystemet og ved å legge til en betingelse direkte i spørringsteksten V til feltene i hovedtabellen. Som et resultat av bruk av filtre ved hjelp av komposisjon, kan de brukes både i nestede spørringer og i parametere for virtuelle tabeller.

Når du designer dynamiske lister, anbefales det at du tester alle dynamiske lister med vilkårlige spørringer. Under verifiseringsprosessen bør du sørge for at hvis listespørringen inneholder nestede spørringer eller virtuelle tabeller, og felt med aliaser som samsvarer med aliasene til standard eier-, overordnet-, dato-, periode-, denne gruppe- eller nøkkelfeltene er tilgjengelige for valg, disse feltene er gyldige, samsvarer med standardkravene som de har samme alias med. Hvis dette ikke er tilfelle, bør du endre forespørselen slik at de stemmer overens, eller
pseudonymet var annerledes.
Hvis du velger å generere en forespørsel manuelt, pålegges noen begrensninger for forespørselen:
● Bruken av FIRST-setningen i en dynamisk listespørring støttes ikke. Hvis du trenger å bruke et utvalg begrenset av antall poster i en dynamisk liste, bør du redesigne spørringen for å generere en dynamisk liste på en slik måte at det faktiske innholdet i spørringen plasseres i en underspørring og begrense antallet hentede poster i denne underspørringen. Du kan også bruke en midlertidig tabell i stedet for en underspørring.
● Filtrering, sortering og gruppering støttes ikke:

  • I henhold til detaljene i tabelldelene.
  • Vis felt.
  • Dataversjon-feltet.
  • Forhåndsdefinert DataName-felt.
  • Felt Type kontoplan.
  • Flyttetype-feltet i akkumuleringsregistertabellen.
  • FelttypeVerdier for diagrammet over karakteristiske typer.
  • Felt av type Type;
  • Felt for strengtype (ubegrenset lengde).
  • Felt av typen BinaryData.

● Sortering og gruppering etter Subconto-felt støttes ikke<НомерСубконто>og ViewSubconto<НомерСубконто>tabellene til MovementsSubkonto til regnskapsregisteret.
● Gruppering etter felt, som er spørringsspråkuttrykk som inneholder aggregerte funksjoner, støttes ikke.
● Når hovedtabellen er valgt, har den dynamiske listespørringen følgende begrensninger:

  • Blir støttes ikke.
  • Bruken av ORDER BY-delen støttes ikke. Du bør bruke en spørring uten hovedtabell eller spesifisere den nødvendige rekkefølgen gjennom innstillingene til en dynamisk liste.

● Hvis en dynamisk liste vises som en hierarkisk liste eller tre, vil ikke posten vises i den dynamiske listen hvis minst én av foreldrene til denne posten ikke vises. Med andre ord, for å vise et element i en hierarkisk liste, må en dynamisk liste også vise alle foreldrene til dette elementet opp til toppen av listen. I dette tilfellet betyr toppen av listen enten
rotelementet til et hierarkisk objekt vist av en dynamisk liste, eller et element satt som TopLevel-egenskapen til en skjematabellutvidelse for en dynamisk liste.

Bruk av følgende tabeller som hovedtabell for dynamisk liste støttes ikke:

● En tabell som ikke har en nøkkel som unikt identifiserer hver tabellpost (referanse for objekttabeller og postnøkkel for registertabeller). Følgende tabeller kan imidlertid settes som den dynamiske hovedlistetabellen (til tross for mangelen på en nøkkel):

● tabell Subconto av regnskapsregisteret;
● alle virtuelle tabeller i regnskapsregisteret, bortsett fra MovementsSubkonto-tabellen;
● tabeller med konstante verdier (inkludert tabellen konstanter);
● tabeller over eksterne datakilder uten nøkkelfelt;
● tabeller med kuber av eksterne datakilder;
● akkumuleringsregistertabeller:

  • revolusjon tabellen;
  • gjenværende tabellen;
  • tabell over omsetning og saldo.

● beregningsregistertabeller:

  • faktisk gyldighetstabell;
  • grafiske data;
  • grunnleggende data.

● Tabeller over tabellsnitt av objekter;
● Tabeller over registrering av endringer (brukt i datautvekslingsmekanismer);
● Sekvenstabeller;
● Allokeringstabeller (brukes i periodiske oppgjørsmekanismer).
● En tabell som bare brukes i en spørring i en ytre sammenføyning.

Med andre ord, en dynamisk liste med den spesifiserte hovedtabellen vil fungere korrekt hvis, som et resultat av kjøringen av spørringen,
spesifisert som en datakilde, øker ikke antall rader mottatt fra hovedtabellen (med tanke på det pålagte utvalget). Hvis antallet rader mottatt av spørringen fra hovedtabellen øker som et resultat av kjøringen av spørringen, vil dette føre til et brudd på unikheten til nøkkelen til postene til tabellen som vises i listen. I dette tilfellet må du deaktivere bruken av den dynamiske hovedlistetabellen.
Når du arbeider med en dynamisk liste, er det nødvendig å ta hensyn til tilgangsrettighetene til detaljene som vises av listen:
● Data for kolonner i en dynamisk liste som er merket med Bruk alltid-egenskapen, men som gjeldende bruker ikke har Vis-rettigheten for, overføres ikke til klientsiden. Tilgang til dataene i slike kolonner (ved hjelp av CurrentData-egenskapen og theRowData ()-metoden)
på klientsiden er ikke mulig.
● Hvis den gjeldende brukeren ikke har Vis-rettigheten på et nøkkelfelt i en dynamisk liste, resulterer henting av data for den dynamiske listen i en tilgangsbruddsfeil.
For en dynamisk liste som viser en oppregningsliste, er det ingen måte å interaktivt tilpasse listen.
Sammensetningen av kolonnene og innstillingene til den dynamiske listen er knyttet til spørringsfeltene av aliasene til utvalgsfeltene. Hvis et alias ikke er eksplisitt spesifisert for et utvalgt felt i spørringen og feltet er et systemfelt, brukes feltnavnet for den engelske versjonen av det innebygde språket som alias.
Den angitte relasjonen betyr at når du endrer (eller spesifiserer eksplisitt et alias for et felt som brukte et automatisk alias)
aliaset til spørringsfeltet som genererer dataene til den dynamiske listen, innstillingene til attributtet for dynamisk liste vil gå tapt, skjemaelementene vil "miste" de viste detaljene, innstillingene til den dynamiske listen blir feil, etc.
Hvis datakilden til den dynamiske listen er en tabell (vanlig eller virtuell) som lar deg angi filtrering etter periode, så hvis brukeren setter visningsperioden i en slik dynamisk liste (kommandoen Angi datointervall ...),
de angitte periodegrensene vil bli satt som filtreringsverdier eller virtuelle tabellparametere. Hvis ved hjelp av språkutvidelse
spørringer for datasammensetningssystemet, navnene på parametrene til den virtuelle tabellen ble eksplisitt spesifisert - parametrene med den gitte
navn. Tabeller som det er mulig å kontrollere perioden for visning eller behandling av data:
● registertabeller (hoved- eller virtuelle), som det er mulig å velge etter periode (for et oppgjørsregister - etter registreringsperiode);
● hovedtabeller over dokumenter, forretningsprosesser og oppgaver;
● hovedtabeller over dokumentjournaler;
● hovedsekvenstabeller, sekvensgrensetabeller.
En matrise eller en liste med verdier kan brukes som en spørringsparameter for en dynamisk liste. Men hvis parameteren er en liste med verdier, vil bare den første verdien av listen brukes som valgverdi. Hvis en dynamisk liste bruker en spørring med parametere, bør den første innstillingen av parameterverdier utføres i OnCreateAtServer-behandleren.
Husk følgende punkter når du viser dynamiske listedata:
● Programmatisk endring av egenskapene til en dynamisk liste fyller ikke automatisk kommandolinjene knyttet til
med denne dynamiske listen.
● Hvis flere felt er gruppert i en gruppe med grupperingsmodus Cellen og de grupperte feltene har et felt som vises som en avkrysningsboks, vil denne avmerkingsboksen alltid vises først i den resulterende cellen (til venstre for teksten).
I en dynamisk liste, når du definerer en datatype for felt som inkluderer parametere, felt eller bokstaver i uttrykk, bestemmes den resulterende typen av felt- og bokstavtypene. Hvis typen til parameterverdien ikke er inkludert i den resulterende datatypen, vil verdien avkortes.
For eksempel, i følgende eksempel vil feltet være av typen Number.

VALG
NÅR EN LØGN
SÅ 5
ELLERS
&Parameter
SLUTTEN

Hvis du tilordner en verdi av en annen type til parameteren Parameter, vil den dynamiske listen for dette feltet motta verdien 0 (standardverdien for nummertypen).
Hvis du i en lignende situasjon må velge en parameter av en annen type, anbefales det å bruke spørringsspråkkonstruksjonen UTTRYKKE... For eksempel,
hvis det i eksemplet ovenfor er nødvendig å sende en streng på ikke mer enn 100 tegn inn i parameteren, bør den enkle indikasjonen av parameteren erstattes med et uttrykk med en eksplisitt typekonvertering:

VALG
NÅR EN LØGN
SÅ 5
ELLERS
EXPRESS (& Parameter AS String (100))
SLUTTEN

Hvis parametere brukes i den vilkårlige teksten til en dynamisk listespørring i uttrykkene til utvalgsfeltene, bør du eksplisitt angi parametertypen ved å bruke konstruksjonen UTTRYKKE... For eksempel i stedet for & Nomenclature AS Nomenklatur bruk
EXPRESS (& Nomenclature AS Reference.Nomenclature) AS Nomenclature... Ellers kan det fungere å søke gjennom søkefeltet
feil eller gi feil.

3. Måter å hente og cache data med en dynamisk liste

Når du henter data for visning, bruker den dynamiske listen en av tre metoder:
1. Lesing fra databasen utføres i porsjoner med antall dataelementer som litt overstiger antallet linjer som vises samtidig i listen (men ikke mindre enn 20). Data er ikke bufret på serveren.
2. Lesing fra databasen utføres på sider med 1000 dataelementer. Dataene bufres på serveren. Hierarkiske data bufres: For hver forelder bufres ikke mer enn 2 elementsider. Ikke mer enn 20 elementsider bufres per dynamisk liste. Bufring vil bli aktivert av en dynamisk liste for følgende tabeller:
● Utvalgskriterium;
● Alle tabeller i regnskapsregisteret, bortsett fra hovedtabellen og TransactionSubkonto-tabellen;
● Alle tabeller i akkumuleringsregisteret, bortsett fra hovedtabellen;
● Alle tabeller i informasjonsregisteret, bortsett fra hovedtabellen;
● Alle tabeller i beregningsregisteret, bortsett fra hovedtabellen;
● Virtuelle bordoppgaver etter entreprenør;
● Tabeller over eksterne kilder uten nøkler;
● Kuber av eksterne kilder.

3. Lesing fra databasen utføres i sider med 1000 elementer. Den første delen er lik 1 side. Hver neste del økes med 1 side (når slutten av forrige prøve nås). Jo nærmere "synspunktet" beveger seg mot slutten av de viste dataene, desto større blir prøven lest fra databasen, ettersom grensen blir lik alle viste data. Dataene bufres på serveren. Maksimalt antall oppføringer i hurtigbufferen og den dynamiske listen er 1 000 000.
Avhengig av hva som er valgt av hovedtabellen til den dynamiske listen og hvilken verdi den dynamiske leseegenskapen har, brukes en eller annen måte å lese data på:

● En av følgende tabeller er spesifisert som verdien av Main table-egenskapen: utvekslingsplan, oppslagsbok, dokumentliste, dokumentjournal, diagram over karakteristiske typer, kontoplan, diagram over beregningstyper, forretningsprosess, oppgave, tabell av forretningsprosesspunkter:



● En av følgende tabeller er spesifisert som verdien av egenskapen Hovedtabell: hovedtabellen til informasjonsregisteret, akkumuleringsregister, regnskapsregister, beregningsregister, virtuell tabell til regnskapsregisteret MovementsSSubkonto:

● Eiendomsdynamisk lest:
● Installert: Metode 1 brukes (metodene er beskrevet ovenfor).
● Klarert: Metode 2 brukes (metodene er beskrevet ovenfor).

● Main table-egenskapen inneholder en utvalgskriterietabell eller en tabell med oppgaver etter utøver (Tasks by Performer):
● Nøkkel som identifiserer tabellraden: Ref.

● Som egenskapen Hovedtabell er den virtuelle tabellen til informasjonsregisteret SliceFirst eller SliceLast spesifisert:
● Nøkkel som identifiserer tabellraden: RecordKey.
● Egenskapen Dynamisk lesing er ikke aktuelt.
● Metode 2 brukes (metodene er beskrevet ovenfor).

● En av de virtuelle registertabellene er spesifisert som hovedtabellegenskapen, bortsett fra de som er oppført ovenfor:

● Egenskapen Dynamisk lesing er ikke aktuelt.

● Main table-egenskapen er ikke spesifisert, en vilkårlig spørring brukes:
● Nøkkel som identifiserer tabellraden: Nummer.
● Egenskapen Dynamisk lesing er ikke aktuelt.
● Metode 3 brukes (metodene er beskrevet ovenfor).

For visning overføres data til klienten i biter, hvis størrelse er lik chunkstørrelsen i den første datalesemetoden (beskrevet i begynnelsen av denne delen).
Når du oppretter et skjema som inneholder en dynamisk liste, sendes først 45 dataelementer av hver synlige dynamiske liste til klienten (hvis listen inneholder mer enn 45 elementer). Hvis den dynamiske listen viser mer enn 45 rader, vil det bli foretatt et ekstra serverkall for å hente de manglende dataelementene når skjemaet åpnes.

4. Dynamiske listeinnstillinger

Egenskapen Listetilpasning - ved å klikke på hyperkoblingen Åpne åpnes skjemaet for å tilpasse visningen av en dynamisk liste. Å sette opp en liste gjøres på samme måte som lignende operasjoner i datasammensetningssystemet.


Ris. 2. Betinget utseende av en dynamisk liste

Når du setter opp en dynamisk liste i konfigurasjonen, har utvikleren av den anvendte løsningen muligheten til å gjøre følgende:
● angi feltene for bestilling;
● beskrive utvalget av data i listen;
● spesifiser de betingede utseendeinnstillingene;
● angi feltene du vil gruppere dataene etter.
Det er fornuftig å tilordne sortering til utvikleren hvis du ikke er fornøyd med standardsortering satt av systemet.

RÅD. Det bør huskes at dårlig utvalg av sorteringsfelt (samt utvalg og gruppering av data) påvirker effektiviteten til dynamisk utvalg negativt.
Fra en applikasjonsutviklers synspunkt består dynamiske listeinnstillinger av flere deler som er sammenkoblet. Hovedegenskapen som du kan kontrollere innstillingene for den dynamiske listen gjennom er Konfigurator... Dette objektet inneholder tre sett med innstillinger som, når systemet kjører, bestemmer de endelige innstillingene som brukes på den dynamiske listen:
● Innstillinger - innstillinger opprettet i konfiguratormodus. Egenskapen Order dynamic list gir rask tilgang til Settings-egenskapen til koblingen for dynamiske listeinnstillinger, så følgende konstruksjoner er likeverdige:
List.Order og List.OptionComposer.Settings.Order;
● Brukerinnstillinger er innstillinger som brukeren endrer i 1C: Enterprise-modus;
● FixedSettings - Disse innstillingene angis fra det innebygde språket. Denne egenskapen inneholder også utvalgsverdier som sendes til skjemaet ved hjelp av parameterne. Egenskapene til den dynamiske listen Selection, Parameters, Conditional formatting gir rask tilgang til de faste innstillingene til den dynamiske listeinnstillingslinkeren. Med andre ord, disse treffene er likeverdige:
List.Settings Composer.FixedSettings.Filter og List.Feed.
Når du danner den endelige innstillingen for den dynamiske listen, kombineres de ulike innstillingsalternativene som følger:
● Hvis noen form for innstillinger er fullstendig merket som egendefinerte, inkluderer de resulterende innstillingene de egendefinerte innstillingene
(List.ComposerSettings.UserSettings). I dette tilfellet, hvis noen innstillingselementer er merket som utilgjengelige, vil disse innstillingene bli plassert i de resulterende innstillingene fra List.Settings Composer-egenskapen. Innstillinger.
● Hvis noen form for innstillinger er merket som bruker ikke helt, men element for element, så:
● Elementer merket som egendefinerte vil bli inkludert i de resulterende innstillingene fra List.OptionsComposer.UserSettings-egenskapen.
● Elementer merket som utilgjengelige vil bli inkludert i de resulterende innstillingene fra List.OptionsComposer.Settings-egenskapen.
● Faste innstillinger (List.ConfigurationComposer.FixedSettings) legges til de resulterende innstillingene "som de er". I dette tilfellet er situasjonen uakseptabel når det er innstillinger med samme navn i de faste og egendefinerte innstillingene, for eksempel valg med samme venstre verdi i tilstanden.

Hvis de dynamiske listeinnstillingene inneholder innstillinger som er deaktivert ved hjelp av funksjonsalternativene, vil disse innstillingene bli fjernet fra listen over tilgjengelige innstillinger når de dynamiske listedataene mottas.
Kontroll over hvilke innstillinger som vil være tilgjengelige for brukeren og hvilke som ikke skal utføres i vinduet for dynamiske listeinnstillinger.


Ris. 3. Kontrollere inkludering i egendefinerte innstillinger

Avmerkingsboksen nederst i vinduet (se fig. 3) er ansvarlig for å plassere hele typen innstillinger i innstillingene (normal eller rask). Denne funksjonen er tilgjengelig for valg, bestilling, gruppering og betinget design. Hvis innstillingene er spesifisert med redigeringsmodusen Hurtigvalg, må du spesifisere en tom skjemagruppe i gruppen Egendefinerte innstillinger i skjematabellen som viser en dynamisk liste der elementene som er knyttet til hurtigtilpassede innstillinger for den dynamiske listen plassert. Hvis gruppen ikke er spesifisert, vil ikke hurtigbrukerinnstillinger vises på skjemaet. Det er også mulig å eksplisitt kalle oppretting av egendefinerte innstillinger ved å bruke det innebygde språket ved å bruke CreateCustomSettingsFormElements ()-metoden til den dynamiske listeutvidelsen.
Det er også mulig å velge muligheten til å plassere spesifikke innstillingselementer i brukerinnstillingene. Denne funksjonen er tilgjengelig for valg og betingede elementer (se fig. 3).

Hvis det er nødvendig at noen spesielle innstillinger lastes inn når du åpner en dynamisk liste, kan dette gjøres på to måter:
● Bruke parameteren CustomSettings dynamisk listeskjema. Dataene i denne parameteren vil bli plassert i de tilpassede innstillingene for den dynamiske listen.
● Bruke skjemaparameteren til den dynamiske listen CustomSettingsKey. Hvis du angir denne parameteren når du åpner skjemaet, vil de tilpassede innstillingene som ligger i innstillingslageret med den angitte nøkkelen lastes inn i den dynamiske listen, som er hovedattributtet til skjemaet.

5. Søk i en dynamisk liste

En dynamisk liste på skjemaet gir muligheten til å utføre et interaktivt søk i de viste dataene. Søket kan utføres ved hjelp av følgende verktøy: søkestreng, søkedialog, søk etter gjeldende verdi, bruk av søkehistorikk og innstilling av periode (for dynamiske lister som viser dokumenter). Søkeresultatet er et begrenset sett med poster
en dynamisk liste (tilgjengelig for en gitt bruker) som samsvarer med søkekriteriene.
Det er tre egenskaper for den administrerte skjematabellen som viser den dynamiske listen for å kontrollere søkemulighetene til en dynamisk liste:
● Posisjon for søkestrengen - definerer posisjonen til søkestrengen. Den kan ha følgende verdier: Auto, Kommandopanel, Ingen, Topp, Bunn.


Ris. 4. Søkestreng i en dynamisk liste

Hvis verdien til denne egenskapen er satt til kommandolinjen, vil søkestrengen vises i kommandolinjen til skjemaet (hvis den dynamiske listen er hovedattributtet til skjemaet) eller i kommandolinjen knyttet til den dynamiske listen . Søkefeltet i kommandolinjen er alltid plassert på høyre kant av kommandolinjen (sammen med knappene til høyre for søkefeltet).
Hvis egenskapen er satt til Nei, vil søkestrengen være fraværende på skjemaet, og en dialogboks åpnes når søkestrengen begynner.
Hvis egenskapen er satt til Topp, vil søkestrengen plasseres mellom listekommandoeruten og tabellen som viser den dynamiske listen. Hvis egenskapen er satt til Bunn, vil søkestrengen plasseres umiddelbart etter tabellen som viser den dynamiske listen.


● Hvis egenskapen Kompatibilitetsmodus er satt til Ikke bruk eller er eldre enn versjon 8.3.4, er verdien Kommandopanel.
Gå til søkefeltet som følger:
● Ved å trykke på hurtigtastene Ctrl + F;
● Mus;
● Når du begynner å skrive i en dynamisk liste (tar i betraktning verdien av egenskapen Dynamic List til SearchPrinting).
● Posisjon for visningstilstanden - beskriver hvor visningstilstanden vil vises: hvilke felt ble søkt etter og hvilke verdier
ble søkt på alle felt. Kan ta følgende verdier: Auto, Ingen, Topp, Bunn


Ris. 5. Status for søket i den dynamiske listen

Hvis egenskapen er satt til Nei, vil visningstilstanden være fraværende på skjemaet. Som et resultat vil det være mulig å fastslå om et søk er utført eller ikke bare ved tilgjengeligheten av Avbryt søk-knappen.
Hvis egenskapen er satt til Topp, vil visningstilstanden plasseres mellom listekommandoeruten og tabellen som viser den dynamiske listen. Hvis egenskapen er satt til Bunn, vil visningstilstanden plasseres umiddelbart etter tabellen som viser den dynamiske listen.
Hvis skjemaet ble opprettet i 1C: Enterprise versjon 8.3.4 og tidligere, er egenskapen satt til No. Hvis skjemaet ble opprettet i "1C: Enterprise" versjon 8.3.5 og nyere, settes egenskapen til Auto. Den virkelige verdien av eiendommen i dette tilfellet vil bli bestemt som følger:
● Hvis egenskapen Kompatibilitetsmodus er satt til versjon 8.3.4 (eller lavere) - er verdien Ingen;
● Hvis egenskapen Kompatibilitetsmodus er satt til Ikke bruk eller er eldre enn verdien Versjon 8.3.4 - verdien Top;
● Søkekontrollposisjon – Bestemmer hvor søkekontrollknappen skal vises. Knappen åpner en meny som inneholder følgende informasjon: kommandoer Finn etter gjeldende verdi, Avansert søk, Avbryt søk, Angi periode (for lister over dokumenter og journaler) og historikk for søk (siste 5 søk). Egenskapen kan ha verdier: Auto, Ingen, Kommandolinje.


Ris. 6. Kontrollere søk i en dynamisk liste

Hvis egenskapen er satt til Nei, vil søkekontrollknappen være fraværende på skjemaet (men kommandoene vil være tilgjengelige ved å bruke Mer-menyen). Verdien til kommandoruteegenskapen plasserer en knapp på kommandoruten knyttet til tabellen som viser den dynamiske listen.
Hvis skjemaet ble opprettet i 1C: Enterprise versjon 8.3.4 og tidligere, er egenskapen satt til No. Hvis skjemaet ble opprettet i "1C: Enterprise" versjon 8.3.5 og nyere, settes egenskapen til Auto. Den virkelige verdien av eiendommen i dette tilfellet vil bli bestemt som følger:
● Hvis egenskapen Kompatibilitetsmodus er satt til versjon 8.3.4 (eller lavere) - er verdien Ingen;
● Hvis egenskapen Kompatibilitetsmodus er satt til Ikke bruk eller er eldre enn verdien Versjon 8.3.4 - kommandolinjeverdien;
Hvis et skjema inneholder flere kommandopaneler, hvor kilden til kommandoer er én tabell i et administrert skjema (som viser data fra en dynamisk liste), vil søkestrengen og søkekontrollknappen være plassert i bare ett kommandopanel:
● Eller i kommandolinjen i selve den dynamiske listen (hvis autofullføring er aktivert for det)
● Eller i et av de gjenværende kommandopanelene.

La oss vurdere funksjonene ved å bruke søk i en dynamisk liste:
● For å gjøre søket praktisk å bruke (inkludert fra ytelsessynspunktet), må du aktivere fulltekstsøk for alle konfigurasjonsobjekter som kan brukes som hovedtabellen i den dynamiske listen. Fulltekstsøk bør også inkludere alle attributter til konfigurasjonsobjekter som kan vises i en dynamisk liste og som kan kreve et søk.
Hvis objektet er ekskludert fra fulltekstsøk, vil den aktuelle søkemotoren fungere, men ytelsen til et slikt søk vil være ekstremt lav. Det anbefales ikke å bruke søk på objekter som ikke er indeksert av fulltekstsøk.
● Applikasjonsløsningen må ha en planlagt jobb som jevnlig oppdaterer fulltekstsøkeindeksen.

● Søket utføres ikke i alle kolonnene i den dynamiske listen (og konfigurasjonsobjektet), men bare i de kolonnene som vises i tabellen.
● Søk i en dynamisk liste etter felt med referansetyper med vilkårlig representasjon utføres av feltene som brukes til
dannelse av et syn (se her). Feltene som er inkludert i visningen er hentet under hensyntagen til ViewFieldGetProcessing ()-behandleren til det tilsvarende objektet.
● For dynamiske lister med den angitte hovedtabellen brukes fulltekstsøk på hovedtabellen. Alle ikke-indekserte lenker fra hovedtabellen vil bli lagt til fulltekstsøkeresultatene. Fulltekstsøkeresultatet for hovedtabellen brukes som et utvalg etter nøkkelfelt. Det utføres også et fulltekstsøk på feltene som vises i listen fra andre tabeller (hvis det brukes fulltekstsøk for feltet og konfigurasjonsobjektet). Uten fulltekstsøk aktivert, kan data være
funnet, men selve søket vil gå veldig sakte.
Hvis det oppstår en feil under forsøk på å utføre et fulltekstsøk, vil søket utføres uten bruk av fulltekstsøk.
Dette kan for eksempel skje når du søker etter én bokstav og et stort antall linjer i infobasen som begynner med denne bokstaven.
● Hvis et filter med sammenligningstypen Equal brukes for et felt i hovedtabellen til en dynamisk liste, vil filterverdien legges til søket for denne tabellen når du utfører et fulltekstsøk.
● Søkestrengen er delt inn i ord. Denne oppdelingen gjøres i henhold til følgende regler:
● Linjen deles med mellomrom og tabulatortegn som skilletegn.
● Deretter behandles hvert resulterende fragment:
● Hvis delen er en datorepresentasjon (med eller uten tid) basert på gjeldende regionale innstillinger for økten, er delen ordet.
● Ellers deles fragmentet videre ved å bruke tegnene “, .- / \” som skilletegn. I dette tilfellet tas hvert resulterende linjefragment som et ord.

● For hvert ord dannes dets eget sett med betingelser, som er kombinert "ved ELLER". Dette settet med betingelser dannes hvis fulltekstsøket etter det gitte ordet i tabellen som det gitte feltet ble hentet fra, returnerte minst ett objekt, eller fulltekstsøket ikke ble brukt for dette feltet. Betingelsene er dannet som følger:
● For et felt av typen String har betingelsen formen Feltnavn LIKE% Word%.
● For et felt av typen Number, har betingelsen formen Feltnavn = Verdi, der Verdi er et ord som er kastet til talltypen. Hvis castingen ikke kan utføres, vil ikke feltsøket bli utført.
● Ordet søkes etter som en delstreng i standardrepresentasjonen av den boolske typen som er definert for gjeldende økt. Hvis søkeordet finnes i representasjonen, blir det deretter utført et søk etter en verdi som tilsvarer representasjonen der ordet ble funnet. Søket bruker imidlertid ikke visningene som er spesifisert ved bruk av formatelementegenskapen til skjemaet.
● For et felt av typen Dato har betingelsen formen FieldName> = StartDay (Word) AND FieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
er spesifisert med ett eller to sifre, vil året bli konvertert til gjeldende århundre og denne verdien vil bli erstattet i søkebetingelsen.
● For referansefelt utføres et søk på feltene som brukes til å danne referansepresentasjonen. Søk i hvert av disse feltene
utføres i henhold til reglene beskrevet ovenfor. Søket bruker ikke feltene som brukes til å danne en vilkårlig datarepresentasjon.
Settet med betingelser for hvert ord er kombinert "med OG".
● For verdier med innledende nuller kan du søke både i en streng med innledende nuller og en streng spesifisert uten innledende nuller.
● Hvis en dynamisk liste viser en liste over dokumenter eller en dokumentjournal, vises det angitte listeskanneintervallet også i skjemaområdet som er reservert for visning av visningsstatus for den nødvendige dynamiske listen.
● Søkekommandoen etter gjeldende verdi er ikke tilgjengelig hvis hovedtabellen i den dynamiske listen er et filterkriterium.
● Fant linjefragmenter utheves når de vises i tabellen.
● For én kolonne støttes bare én søkestreng. Når du legger til et nytt søkeord for en kolonne som allerede søkes i, vil søkeuttrykket erstattes, ikke tillegget av de to søkene.
● Hvis skjemaet ikke inneholder et supplement til et skjemaelement i Visning av en søkestreng knyttet til en tabell (kildeegenskapen til et element i et skjema) som viser en dynamisk liste, åpnes søket ved å trykke på Ctrl + F tastekombinasjonen dialog.


Ris. 7. Søk dialog

Hvis skjemaet inneholder et tillegg til et skjemaelement av typen Visning av en søkestreng knyttet til en tabell (Kildeegenskapen til et skjemaelementtilføyelse) som viser en dynamisk liste, bruker du kommandoen Avansert søk for å åpne søkedialogen.
● Når du bruker søkedialogen, må du huske på følgende punkter:
● Åpning av søkedialogen med hurtigtast resulterer i at verdien til den gjeldende cellen er på linjen Hva skal søkes, og verdien av alternativknappen Hvordan søker er satt til Ved eksakt samsvar.

● Åpning av søkedialogen ved å begynne å skrive en søkestreng direkte i en dynamisk liste fører til at verdien av avmerkingsboksen Hvordan søke blir satt til Etter en del av strengen, og den innskrevne teksten går inn i feltet Hva skal søkes.

6. Henter data vist av en dynamisk liste

Når du bruker dynamiske lister, kan det hende du må utføre ulike handlinger med dataene som for øyeblikket vises av den dynamiske listen, med tanke på de pålagte filtrene og brukte søk. Disse handlingene inkluderer: behandle den viste informasjonen, for eksempel repostering av valgte dokumenter eller innstilling av attributter for valgte objekter, generering av en liste over tilgjengelige objekter (med design, etc.), for eksempel for utskrift eller lagring i et regnearkdokument.
For å få data som vises i en dynamisk liste, bruk GetExecutableDataCompositionSchema () og
Få ExecutableDataCompositionSettings ().
Et eksempel på innhenting av data:

Schema = Items.List.Get ExecutableDataCompositionSchema ();
Innstillinger = Items.List.Get ExecutableDataCompositionSettings ();
LayoutComposer = New LayoutComposerDataComposition ();
LayoutComposition = LayoutComposer.Run (Outline, Settings);
Composition Processor = Ny Data Composition Processor;
LayoutProcessor.Initialize (LayoutDetail);
OutputProcessor = NewDataCompositionOutputResultProcessorI et tabelldokument;
Return OutputProcessor.Output (LayoutProcessor);

Å hente data inn i en samling av verdier (tabell eller liste over verdier) er lignende.
Å motta dynamiske listedata på denne måten har en rekke funksjoner som må tas i betraktning når man utvikler anvendte løsninger:
● Følgende tabelldesign støttes ikke:
● Vekslende radfarger;
● Overskriftsbilde;
● Bilde av kjelleren;
● Bakgrunnsfarge på kjelleren;
● Bunntekstfarge;
● Bunntekstfont;
● Horisontal posisjon i kjelleren;
● Passordmodus.
● Det betingede utseendet som er spesifisert for det administrerte skjemaet støttes ikke.
● Når du bestiller en hierarkisk tabell i stigende rekkefølge, etter felt av koblingstypen, plasseres alltid poster som inneholder en tom lenke først.

I prosessen med å fullføre konfigurasjonene, står hver 1C-programmerer overfor dynamiske lister.
En dynamisk liste er et grensesnittobjekt som brukes til å vise ulike lister over databaseobjekter eller ikke-objektdata – registerposter.
For eksempel brukes en dynamisk liste til å vise en liste over elementer:

For å demonstrere egenskapene til en dynamisk liste, la oss lage en ekstern behandling, legge til et hovedskjema. La oss legge til et nytt attributt av typen "Dynamisk liste" i skjemaet. La oss gå til eiendommene og se hva som er der.
Vi er interessert i egenskapen "Arbitrary Request". Aktivering av den vil vise oss alle egenskapene til en dynamisk liste. Vi vil kunne skrive en forespørsel ved å bruke nesten alle funksjonene til 1C: Enterprise spørrespråk. Merk av i boksen og klikk på "Åpne"-koblingen:

Som standard vil listen vår vise en liste over varer med total saldo for alle varehus. For å implementere en slik liste, legg til følgende spørring:


Som hovedtabell vil vi velge "Referanse. Nomenklatur", dette vil tillate oss å jobbe med en dynamisk liste, som med en liste over elementer - legg til, endre, merk for sletting av referanseelementer. Å sette hovedtabellen gjør også muligheten til å lese data dynamisk - dette betyr at valget vil bli gjort i porsjoner etter behov.
Deretter må du lage skjemaelementer for listen vår:

Hvis vi prøver å starte behandlingen i dette skjemaet, får vi en feilmelding:


For å eliminere det, må du angi en verdi for parameteren "Periode". For å gjøre dette kan du bruke "SetParameterValue"-metoden i "Parameters"-samlingen i den dynamiske listen. Metoden tar to parametere:
... "Parameter" - Type: String; DataComposition parameter. Navnet på parameteren eller datasammensetningsparameteren hvis verdi du vil angi;
... "Verdi" - Type: Vilkårlig. Verdien som skal angis.
Kan kalles i OnCreateAtServer-behandleren av skjemaet:

Har du et spørsmål, trenger du hjelp fra en konsulent?


Vi vil gi brukeren muligheten til å endre perioden for mottak av saldoer. For å gjøre dette, legg til en rekvisitt og et tilknyttet "Dato"-skjemaelement:


I "OnChange"-behandleren til "Date"-skjemaelementet kaller du "SetParameterValue"-metoden, og sender verdien til den tilknyttede variabelen som verdien. La oss endre prosedyren "OnCreateAtServer" for skjemaet på samme måte. Siden metoden er tilgjengelig på klienten, kreves ingen serverkall:


Nå, når datoen endres, blir restene automatisk oppdatert:




Anta at brukere ønsker å se enten gjeldende saldo eller anslåtte kvitteringer. La oss vurdere et av implementeringsalternativene. La oss legge til en boolsk formrekvisitter og en tilhørende bryter:


Når du endrer verdien på bryteren, vil vi endre forespørselsteksten. For å gjøre dette vil vi bruke hendelsesbehandleren "OnChange" til skjemaelementet "DisplayQuantityOnIncoming". Vi må endre "RequestText"-egenskapen til den dynamiske listen avhengig av attributtverdien. Siden denne egenskapen ikke er tilgjengelig på klienten, kreves et kall til serverprosedyren:


Resultatet av endringene:



I tillegg til primitive datatyper som kan finnes i et hvilket som helst programmeringsspråk, er det unike typer i 1C. Hver av dem har sine egne egenskaper, metoder, funksjoner, formål og bruksnyanser i systemet. En av disse typene er en dynamisk liste, som i stor grad letter mange applikasjonsoppgaver. Det er derfor utviklere trenger å kjenne til og kunne håndtere dette allsidige verktøyet.

Muligheter for dynamiske lister i 1C

Hensikten med denne typen er å vise informasjon fra alle databasetabeller, uavhengig av type. Mekanismen ble opprettet på grunnlag av ACS og har lignende evner. Men dette betyr ikke at du definitivt må skrive en forespørsel på 1C-språket, selv om denne muligheten er der og du må bruke den. Du kan ganske enkelt spesifisere tabellen, informasjonen du er interessert i, og 1C vil uavhengig danne den enkleste spørringen.

For å se hvordan den dynamiske listen er dannet og hvilke data den viser, må du åpne de administrerte skjemaene, hvor den er plassert, i konfiguratoren: i listen over attributter gjennom kontekstmenyen, åpne egenskapene og vær oppmerksom på " Egendefinert forespørsel". Hvis avmerkingsboksen mangler, gjenspeiler parameteren "Hovedtabell" databasetabellen som dataene er hentet fra. Ellers gjenspeiler den dynamiske listen dataene til en vilkårlig spørring, som kan sees ved å åpne listepreferansen.

En mye mer vanlig bruk av ad-hoc-spørringsskjemaet er at det gir en flott måte å kombinere og vise et bredt utvalg av data. Oftest brukes denne mekanismen til å vise lagersaldo, varepriser, kvitteringer, problemer eller kjøp. Den bør brukes med forsiktighet, siden ytelsen kan falle med komplekse søk.

En annen nyttig egenskap for en dynamisk liste åpnes når du klikker på bildeteksten "Tilpass liste". Denne menyen lar deg gjøre informasjon mer tilgjengelig og forståelig for sluttbrukere selv når du bruker et standardsett med felt. Uansett om forespørselen er vilkårlig eller ikke, vil du se fanen "Innstillinger", der du kan spesifisere:

  • Valg av en dynamisk liste;
  • grupperinger;
  • Sortering;
  • Registrering.

Bruk av parametere gjør dynamiske lister allsidige og fleksible nok. Du kan også knytte dem til detaljer på et administrert skjema, og dataene vil endres avhengig av parameterne valgt av brukeren. Bruken av disse mekanismene kan forstås og verdsettes ved å vurdere eksempler på problemer i den virkelige verden.

Som et eksempel, la oss vurdere oppgaven med å reflektere varebeholdningen på et kontrollert skjema. I praksis er slike bestillinger ganske vanlige i ulike konfigurasjoner, og en dynamisk liste er ideell som verktøy. For denne oppgaven må vi bruke en vilkårlig spørring, parametrene til den dynamiske listen og dens innstillinger.

For større klarhet, la oss lage en separat ekstern behandling og plassere en dynamisk liste på den. For å implementere planen vår vil tabellen med nomenklaturen være liten, så vi må tillate en vilkårlig spørring. I den vil vi beskrive den venstre forbindelsen til katalogen med listen over nomenklatur og balanseregisteret og sette katalogen som hovedtabell. Et slikt opplegg vil tillate brukere, som arbeider med en dynamisk liste, å legge til eller endre et element.



NomenklaturaPerechen.Naimenovanie AS SELECT navn, TovaryNaSkladahOstatki.Sklad som varehus, TovaryNaSkladahOstatki.KolichestvoOstatok AS KolichestvoOstatok Spravochnik.Nomenklatura av forbindelse AS VENSTRE NomenklaturaPerechen RegistrNakopleniya.TovaryNaSkladah.Ostatki (& TekuhtsayaData,) Som TovaryNaSkladahOstatki NomenklaturaPerechen.Ssylka = TovaryNaSkladahOstatki.Nomenklatura DER

Siden vår forespørsel brukte "CurrentDate"-parameteren, må vi angi verdien før vi bruker behandlingen. For å gjøre dette, i skjemamodulen i prosedyren "OnCreateAtServer", tildeler vi den funksjonen "CurrentSessionDate" med en standardkommando. Vi må også vise den dynamiske listen på kontrollskjemaet og endre rekkefølgen på feltene for klarhet. Dra "Nomenclature Remains"-attributtet inn i skjemaelementene (øvre venstre del) og endre rekkefølgen på feltene i tabellen på skjemaet med blå piler.

& AtServer-prosedyre OnCreateAtServer (Failure, StandardProcessing) RemainingNomenclature.Parameters.SetParameterValue ("CurrentDate", CurrentSessionDate ()) EndProcedure


Allerede på dette stadiet kan vi åpne vår eksterne behandling i 1C og se at den dynamiske listen fungerer. Vi kan se på restene, lage en vare og gruppere, søke. Ofte blir kunder bedt om å legge til muligheten til å velge datoen de vil se saldoene. Når det gjelder et skjema med en dynamisk liste, er dette gitt av et ekstra felt og innstilling av parametere med dets hjelp.

Legg til "DateLeft"-attributtet av typen "Date" og overfør det til skjemaelementene. I felthendelsene oppretter du en hendelse "OnChange" og skriver koden for å angi "CurrentDate"-parameteren som brukes i en dynamisk spørring. Slik at når brukeren åpner skjemaet, forstår han umiddelbart på hvilken dato han ser restene, vil vi gjøre små endringer i prosedyren "OnCreationOnServer".



& AtServer-prosedyre OnCreateAtServer (Cancel, StandardProcessing) RemainingDate = CurrentSessionDate (); RemainingNomenclature.Parameters.SetValueParameter ("CurrentDate", Resterende dato); EndProcedure & OnClient-prosedyre RemainingDateOnChange (Element) Nomenclature Remains.Parameters.SetParameterValue ("CurrentDate", Resterende dato); Slutt på prosedyre

Som et resultat kan vårt dynamiske listeskjema vise saldoer for enhver dato.

Vi har dekket bare en liten del av mulighetene til dette verktøysettet, men dette er allerede nok til å forstå bekvemmeligheten av en slik type som en dynamisk liste. En lignende mekanisme brukes til en rekke oppgaver, men den finnes oftest i typiske konfigurasjoner i administrerte former:

  1. Utvalg;
  2. Lister.

For å få en dynamisk liste og dens forespørsel i typiske administrerte skjemaer, må utvikleren åpne det nødvendige skjemaet i konfiguratoren. Finn et attributt med "DynamicList"-datatypen (oftest er det uthevet med fet skrift) i Requisites-delen. Egenskapene inneholder forespørselstekst, filtre og andre innstillinger.