1s 8.3 SKD kommunikasjonstilstand. Forhold mellom datasett i adgangskontrollsystemet og prinsipper for bruk av dem

Noen ganger, for å få et bestemt layoutresultat, er det nødvendig å opprette koblinger mellom datasett i tilgangskontrollsystemet. Vi vil prøve å snakke om når dette er nødvendig og hvordan du gjør det i artikkelen vår.

Datalayoutskjemaet implementert i 1C støtter tre typer datakilder (fig. 1)

Datakilder

Den mest åpenbare og mest brukte datakilden av utviklere er Query.

Spørringsdesigneren implementert i versjon 8 av 1C er veldig praktisk, og i de fleste tilfeller kan du koble flere tabeller sammen og gjøre de nødvendige grupperingene og valgene direkte i den.

I komplekse tilfeller, når det er nødvendig eller mer hensiktsmessig å bruke kjøringen av en eller annen kode (for eksempel laste inn data fra en tredjepartsfil) eller når det ikke er mulig å bruke en spørring, kommer "Objekt"-datakilden til redningen. Vilkårlig kode som kjøres i modulen må ha en viss struktur ved utgangen som tilgangskontrollsystemet har tilgang til.

Den tredje datakilden er "Union". Faktisk kan denne kilden betraktes som en av typene kommunikasjon. Den kombinerer (reduserer flere tabeller til én), uten å matche, men tilfeldighetene av visse felt. Det vil si at hvis to tabeller som slås sammen har henholdsvis 3 og 4 rader, vil den resulterende datakilden ha 7 rader.

Formulering av problemet

Som et testområde vil vi velge UPP-basen, versjon 1.3.92.3, som fungerer i normal applikasjonsmodus.

Vi har fått følgende oppgave: Bruk kun tilgangskontrollsystemet, lag en rapport som viser en tabell over kjøpte varer fra dokumentet, med priser hentet fra filen sendt av motparten.

Så vi må:

  1. Ta tabelldel kvitteringsdokument;
  2. Last opp filen til "Objekt"-datakilden;
  3. Koble disse to kildene med en bestemt parameter (i vårt tilfelle vil dette være kode);
  4. Vis den resulterende tabellen.

Utførelsesprosess

La oss gå gjennom alle trinnene som er oppført:

  • Vi lager en spørring for den tabellformede delen av kvitteringsdokumentet (fig. 2)

Fig.2

  • Lag et datasettobjekt (fig. 3);

Fig.3

Her er det viktig å være oppmerksom på "Navnet på objektet som inneholder dataene"; dette er navnet vi må spesifisere i koden til rapportmodulen.

  • Vi går til rapportmodulen og oppretter "When Composing Result"-prosedyren der (fig. 4);


Fig.4

Vi vil ikke beskrive fremgangsmåten for å hente data fra en ekstern fil, vi vil ta hensyn til den delen av koden som må være tilstede i layouten slik at vi kan få data for "Datasett 2" (fig. 5).

Fig.5

Viktig! Når du oppretter et "Objekt" i prosedyrekode under kobling, må verdien til StandardProcessing-parameteren være False.

Gå til fanen "Datasettkoblinger".

Koblingssett

Gå til den tilsvarende fanen i diagrammet (fig. 6).

Vi ser en tabelldel som er veldig lik tabelldelen som er i spørringsdesigneren, med noen unntak. Avmerkingsboksen "Alle" kan ikke merkes av for kommunikasjonskildesettet og, men flere ekstra kolonner er lagt til.

I datasettrelasjoner kan du bare etablere en relasjon som ligner spørringskonstruktørens venstre ytre sammenføyning.

Før du oppretter en tilkobling, la oss bestemme formålet med kolonnene:

  1. Koblingskilden er det første datasettet som alle tilgjengelige verdier vil bli hentet fra;
  2. Kommunikasjonsmottaker - et sett med data som verdier som tilsvarer vår tilstand vil bli valgt fra;
  3. Kildeuttrykk – et felt eller uttrykk for det første datasettet som sammenligningen vil finne sted mot;
  4. Destinasjonsuttrykket er et felt eller uttrykk for det avhengige settet;
  5. Parameter – hvis du angir parameternavnet i dette feltet, vil kommunikasjon med mottakersettet kun utføres i henhold til verdien spesifisert i parameteren;
  6. Liste over parametere - bestemmer muligheten for å bruke en liste over verdier som en parameter;
  7. Forbindelsesbetingelse – ved å spesifisere et uttrykk her ved hjelp av kildefelt, kan du opprette en betingelse, hvis oppfyllelse vil tjene som et signal for å etablere en forbindelse;
  8. Startverdi – viser startverdien til tilkoblingen;
  9. Obligatorisk relasjon - Bestemmer om feltene som brukes i kilden (sett til FALSE) eller destinasjon (sett til TRUE) er aktivert og legger til relasjonen til oppsettet basert på dette.

Dermed:

  • Kommunikasjonskilden vil være et resultat av vår forespørsel;
  • Objektet vil fungere som en mottaker;
  • Kildeuttrykket vil være "NomenclatureCode";
  • Mottakeruttrykk "Nomenklatur";
  • Kommunikasjon vil være obligatorisk (fig. 7).

Hvis vi hadde angitt navnet på en nomenklatur, eller dens type reproduksjon, eller noe annet som en forbindelsesbetingelse, kunne vi ha fått en mer nøyaktig prøve for oppgaven vår. Resultatet av våre handlinger kan sees i Fig. 8

Fig.8

Det var ingen samsvar for de to nederste linjene i rapporten i prisfilen.

Et datasammensetningssystem kan bruke flere datasett. Og det er ganske logisk at disse datasettene på en eller annen måte skal være forbundet med hverandre. Analogt med 1C-spørringsspråket kan datasett være enten eller. I denne artikkelen vil vi snakke om tilkobling av datasett i adgangskontrollsystem.

Ved første øyekast kan det være uklart hvorfor du må opprette flere datasett og deretter slå sammen dem, hvis du bare kan slå sammen tabeller innenfor ett datasett. Det er minst én årsak til dette - ved bruk av et eksternt datasett. Som du vet, når vi skriver en spørring for et ACS-datasett, kan vi ikke gå inn i det, for eksempel . Selv om dette gjøres ganske enkelt for en normal forespørsel. Ved bruk av et tilgangskontrollsystem er vi tvunget til å overføre en verditabell til det som en . Derav behovet for å koble til datasett. La meg umiddelbart merke at datasett kun kan kobles til ved hjelp av VENSTRE FORBINDELSE. Derfor, i motsetning til her, vil du ikke se avmerkingsbokser som er ansvarlige for typen tabelltilkobling.

La oss nå komme opp med en situasjon, ved å bruke et eksempel som vi kan vurdere å koble til datasett i et tilgangskontrollsystem. Anta at vi har en katalog Varer, som vi kan motta fra forskjellige leverandører, og vi ønsker å generere en rapport med priser på varer etter leverandør for å velge den leverandøren med mest gunstig pris. Og vi tar priser som er aktuelle for øyeblikket, for eksempel gjennom webtjenester fra leverandørenes nettsider.

Følgelig vil vi for varer ha et datasett innhentet ved hjelp av en forespørsel, og for priser vil vi ha et datasett hentet fra en ekstern kilde.


La oss nå gå til bokmerket Datasettrelasjoner og gjør innstillingene som vist på figuren.

På bokmerket Innstillinger La oss først lage en grunnleggende utgang av detaljerte poster


La det være i katalogen vår Varer inneholder følgende oppføringer

Vi kjører rapporten og ser følgende bilde

Det vil si at vi ser at datasettene var sammenkoblet i henhold til alle reglene VENSTRE FORBINDELSE

På bokmerket Datasettrelasjoner Det er mulig å spesifisere noen tilleggsparametere i de aktuelle feltene. Men de brukes ganske sjelden. Du kan lese mer i den tekniske dokumentasjonen og på ITS-diskene.

Datalayoutdiagram (1C SKD)- en praktisk designer for å lage komplekse rapporter i 1C:Enterprise-programvareprodukter som bidrar til utvikling og sporing av produksjonsautomatisering, slik at de kan gjøres så fleksible og vakre som mulig på et minimum av tid. En ekstra fordel med Data Composition Scheme (1C SKD) er automatisk generering av et kontrollert rapportskjema, og med videreutvikling av dette området er det en viktig faktor ved valg av metode for utvikling av en rapport. Men på grunn av kompleksiteten i strukturen til Data Composition Scheme (1C SKD) og det store antallet innstillinger, fører det ofte til lengre utvikling av rapporten enn gjennom "output form designer". Derfor må en 1C-programmerer forstå alle vanskelighetene ved Data Composition Scheme (1C DCS) for å fremskynde utviklingstiden for å generere rapporter ytterligere.

La oss se på de tre første fanene i Data Composition Scheme (1C SKD) - datasett, datasettforbindelser og beregnede felt.

Datasett i 1C SKD

Datasettet inkluderer muligheten til å lage tre objekter - en spørring, et objekt og en forening, la oss se nærmere på hver av dem:

Dette er en vanlig spørring som genereres ved hjelp av Query Builder-knappen. Hvis Autofyll-flagget er satt, vil alle valgte detaljer automatisk bli inkludert i feltene til datasettet. Det er også mulig å tilpasse utfyllingen av feltene i forespørselen på fanen Datasammensetning, der det er tre faner:

Tabeller, her velges tabellene som skal delta i genereringen av rapporten, vanligvis velges standarddata, siden vi på fanen Tabeller og felt allerede har valgt dokumentene, katalogene, registrene vi trenger...

Felter, her velger vi de objektene som skal inkluderes i rapporten, barneflagget indikerer om det vil være tilgjengelige underordnede elementer for objektet eller ikke, det er logisk at for streng, numerisk og lignende data vil det ikke være mulig å sette flagget til True.

Forhold, her velger vi de objektene som kan brukes under forhold i adgangskontrollsystemet.

Noe av arbeidet gjøres i datasammensetningsskjemaet, og noe av det gjøres programmatisk; la oss se på et enkelt eksempel:

Først skal vi lage et layoutdiagram for dataoppsettet til dokumentet og kalle det SKD (for eksempel: 1C SKD), i det lager vi et datasettobjekt, så fyller vi ut feltene, for eksempel har vi et dokument med en tabelldel av varer med detaljer - nomenklatur, mengde og pris.

La oss legge til tre felt og fylle ut hver kolonne med navnet på detaljene, de resterende kolonnene fylles ut automatisk:

La oss lage en knapp på dokumentskjemaet, beskriv operasjonsmekanismen i kontrollerte former:

&På klient

Prosedyre Print()

OurReport = PrintOnServer(); //kall funksjonen på serveren

OurReport.Show(); //viser den genererte rapporten

Slutt på prosedyre

&På server

Funksjon PrintOnServer()

DocumentObject = FormAttributeValue(“Objekt”);

//vi plasserer tabelldelen Produkter i en struktur med navnet ProductsSKD på samme måte som vi anga i SKD selve navnet på objektet som inneholder dataene

DataSet = ny struktur;

DataSet.Insert(“ProductsSKD”, DocumentObject.Products);

//vi får oppsettet vårt og setter standardinnstillingene slik at alle innstillingene for rapportutdata er hentet fra oppsettet vårt

OurLayout = DocumentObject.GetLayout(“SKD”);

Innstillinger = OurLayout.DefaultSettings;

//lage et dataoppsett med våre innstillinger

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, Settings);

//utføre datasammensetning med datasettet vårt

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Vi lager et regnearkdokument og viser rapporten vår i den

ReportDocument = Nytt tabelldokument;

OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Returner DokumentRapport;

EndFunction

Hvis du ønsker, kan du få områder med en hvilken som helst annen layout og også vise dem i denne rapporten, for eksempel har vi et standardoppsett for å generere en betalingsordre og overskriften er veldig godt laget i den, for ikke å gjøre unødvendig arbeid, vi får først oppsettet, viser overskriften, så genererer og viser vi rapporten vår om adgangskontrollsystemet.

OM samling

Vi kan plassere spørringene og objektene våre i den, men i motsetning til en forbindelse, legger den ganske enkelt tabeller til hverandre, det vil si at hvis vi kobler to identiske tabeller, vil vi ende opp med en, og når den kombineres, vil den dobles, la oss se ved et enkelt eksempel:

Vi har tabeller:

Ved kommunikasjon vil vi motta:

Og når kombinert:

La oss nå se på å fylle ut kolonner i datasett (vi hopper over noen, siden de er relatert til andre faner; vi kommer tilbake til dem i fremtidige artikler):

- felt, angi det generelle navnet på attributtet;

­­- sti, angi navnet på detaljene som vi vil kontakte det i tilgangskontrollsystemet, for eksempel i Beregnede felt;

- tittel, angi navnet på attributtet som skal vises i rapporten;

- feltbegrensning, angi tilgjengeligheten av dette kravet;

- begrensning av detaljer, angi tilgjengelighet barneelementer, er det viktig at hvis tilgjengeligheten av detaljene er indikert, så vil selve feltet være tilgjengelig, kanskje denne mekanikken vil bli endret i fremtidige utgivelser;

- uttrykk som feltrepresentasjonen beregnes med, det er praktisk å bruke når vi trenger å endre utdataene til detaljer litt, for eksempel trenger vi etter navnet nomenklatur ble vist lager, der den er plassert, fyll deretter inn følgende: Vare + "er på lageret" + Lager. Jeg gjentar at tilgang til detaljene utføres gjennom navnet angitt i kolonnen sti;

- uttrykksbestilling, en praktisk mekanisme for å sette opp rapportbestilling, hvor tilstanden kan stilles inn manuelt, i likhet med forrige punkt, men som praksis viser, fungerer denne mekanismen ofte ikke slik vi ønsker, og jeg anbefaler deg å bruke standard sortering;

- verditype, angir typen verdi for attributtet; dette må fylles ut hvis du bruker følgende felt;

- tilgjengelige verdier, fungerer bare når den er full verditype, åpne skjemaet og i kolonnen Betydning vi angir elementet som må endres, i henhold til typen kan det være forhåndsdefinerte objekter eller numeriske, for eksempel detaljer har enkle verdier, i presentasjon Vi angir hva vi må endre til, et eksempel på en boolsk type:

- innredningstandardinnstilling feltformat, som ligner på innstillingen i administrerte skjemaer, lar deg mer nøyaktig og vakkert tilpasse utdataene til visse detaljer.

Datasettforbindelser i 1C SKD

Her er den kun installert venstre bli med, på et prinsipp som ligner på forbindelser i forespørsler, i kilde til kommunikasjon spesifiser hovedtabellen for tilkoblingen, i mottaker ytterligere. I uttrykkskilde Og uttrykksmottaker Vi angir detaljene som kommunikasjonen vil finne sted. Vi skal se på de resterende kolonnene mer detaljert når vi ser på fanen. Alternativer. Hvis det ikke er noen ekstra tilkobling med parametere, anbefales det å gjøre tilkoblingen i forespørselen, dette vil fremskynde rapporten.

41
Jeg har nylig laget en rapport med et ubestemt antall kolonner. Jeg ønsket ikke å fikle med koden, så jeg bestemte meg for å gjøre det på tilgangskontrollsystemet. Det var ikke noe problem med dette, det var nødvendig å strekke resultatet til en vilkårlig layout (din egen overskrift +... 27
Selv om CDS-studenter kommer over dette på den første eller andre dagen, bør det være i FAQ-delen. Et enkelt eksempel på å programmere ut en rapport på en layout, ved å bruke standardinnstillingene. //Få diagrammet fra... 18
Ved generering av rapporter på tilgangskontrollsystemet utvides som standard alle grupperinger, men noen ganger er det nødvendig å vise en rapport med sammenslåtte grupperinger umiddelbart etter generering! Denne koden i rapportmodulen lar deg kollapse... 9
Det som kreves ved utvikling av rapporter er at for en bruker med begrensede rettigheter genereres rapporten helt uten kontrollrettigheter! Spesielt hvis RLS er konfigurert. Det er flere måter å gjøre dette på: 1. Installer...

I dette tilfellet bestemmer avkrysningsboksen påkrevd om feltene som brukes i kilden (sett til FALSE) eller i destinasjonen (sett til TRUE) er aktivert, og basert på dette legger forholdet til layouten.

For hvert av datasettene kan du sette opp en hierarkisjekk:

Dette alternativet brukes hvis valgbetingelsen for et felt må behandles på en ikke-standard måte. Et felt kan spesifiseres med et datasett som data hentes fra for å sjekke om en lenke tilhører et hierarki med en viss verdi.

Oppgave 11.33 av eksamen 1C: Plattformprofesjonell. Er det akseptabelt å bruke flere datasett?

  1. Kun ved bruk av datasett – objekt
  2. Kun ved bruk av datasett - spørring

Riktig svar er det første, det er i alle fall akseptabelt.


Oppgave 11.10 av eksamen 1C: Plattformprofesjonell. Når du definerer et forhold mellom to datasett i et datasammensetningsdiagram

  1. Tilkoblingsalternativet (venstre, fullt) velges av utvikleren
  2. Venstre sammenføyning av det første settet til det andre brukes alltid
  3. Den venstre sammenføyningen av det andre settet til det første brukes alltid
  4. En venstre sammenføyning av det første settet til det andre brukes, i noen tilfeller etableres en indre sammenføyning

Riktig svar er fjerde. Datasett kobles kun sammen med venstre eller indre sammenføyning.

Oppgave 11.13 av eksamen 1C: Plattformprofesjonell. I hvilke tilfeller er det nødvendig å konfigurere hierarkikontroll på fanen "Datasett" i layoutdiagramdesignervinduet

  1. Hvis du trenger å forby å motta totaler i henhold til ditt eget hierarki som er forskjellig fra standarden
  2. Hvis du trenger å tillate at totaler oppnås i henhold til ditt eget hierarki, forskjellig fra standarden
  3. Hvis du trenger å forby installasjon av utvalg for å gå inn i en gruppe av ditt eget hierarki, forskjellig fra standarden
  4. Hvis du trenger å tillate at utvalg inkluderes i en gruppe i ditt eget hierarki, forskjellig fra standarden

Riktig svar er nummer fire, beskrivelse i innlegget.

Oppgave 11.16 av eksamen 1C: Plattformprofesjonell. Hva slags koblinger mellom to sett med data kan implementeres i et komposisjonssystem?

  1. Alt som i spørringsspråket: "Alle til alle", "Venstre", "Høyre", "Indre" og "Full"
  2. Bare "Alle til alle", "Venstre", "Høyre" og "Indre"
  3. Bare "Venstre" og "Indre"
  4. Bare "Alle til alle", "Venstre" og "Indre"
  5. Bare "Venstre", "Høyre", "Indre" og "Full".

Riktig svar er fjerde, ifølge testresultatet. Faktisk er den tredje riktig.

Oppgave 11.17 av eksamen 1C: Plattformprofesjonell. Når du setter opp en relasjon mellom to datasett, velges flagget "Nødvendig relasjon". I hvilket tilfelle vil brukerens handlinger føre til at tilkoblingen mislykkes?

  1. Koblingen av data fra begge settene vil bli implementert uavhengig av hvilke innstillinger brukeren har gjort
  2. Listen over valgte felt viser bare feltene i det venstre settet
  3. I listen over valgte felt er kun feltene i det høyre settet spesifisert
  4. I listen over valgte felt er bare feltene til venstre sett angitt, feltet til høyre sett er valgt
  5. I listen over valgte felt er bare feltene til høyre sett angitt; feltet til venstre sett er valgt

Det riktige svaret er det andre, hvis det bare er ett sett (og kilden), så er det ingenting å koble til.

Oppgave 11.39 av eksamen 1C: Plattformprofesjonell. Hvordan overføres eksterne data til et sett - et objekt i et datasammensetningssystem?

  1. Ved hjelp av det innebygde språket gjennom datakomposisjonsprosessoren
  2. Bruke det innebygde språket via layoutbyggeren
  3. Ved hjelp av det innebygde språket gjennom utdataprosessoren til datakomposisjonssystemet

Det riktige svaret er det første, gjennom prosessoren.