Bruke valg i SCD. Bruke valg i DCS Syntaktiske elementer i spørringsspråkutvidelsen av datakomposisjonssystemet

Spørringsspråkutvidelse for datasammensetningssystem

Utvidelse av spørringsspråket for datasammensetningssystemet utføres ved hjelp av spesielle syntaktiske instruksjoner omsluttet av krøllete klammeparenteser og plassert direkte i spørringsteksten.

Syntaktiske elementer i datasammensetningssystemet spørrespråkutvidelse

VELGE

Denne setningen beskriver feltene som brukeren vil kunne velge for utdata. Etter dette nøkkelordet er aliaser for felt fra hovedsøkevalglisten som vil være tilgjengelige for konfigurasjon, oppført, atskilt med komma.

For eksempel:

(VELG vare, lager)

Etter feltaliaset kan det være en kombinasjon av tegn ".*", som indikerer muligheten for å bruke underordnede felt fra dette feltet.

For eksempel indikerer oppføringen Nomenclature.* muligheten for å bruke underordnede felter til feltet "Nomenclature" (for eksempel feltet "Nomenclature.Code"). SELECT-elementet kan bare vises i den første sammenføyningsspørringen.

HVOR

Feltene brukeren kan bruke utvalg på er beskrevet. Dette forslaget bruker tabellfelt. Bruk av valglistefeltaliaser er ikke tillatt. Hver del av forbundet kan inneholde sitt eget WHERE-element.

(WHERE Nomenclature.*, lager)

Et enkelt eksempel

Det er nødvendig å få salg for perioden + vise hele varen, uavhengig av om det var salg eller ikke. Det vil si at du må velge data fra omsetningstabellen til salgsregisteret, data fra nomenklaturkatalogen. La oss hoppe over spørsmålet om hvorfor vi trenger all nomenklaturen.

For å løse problemet kan du opprette en spørring som kobler varen og Salgsomsetningstabellen med en venstre sammenføyning, som et resultat, for varen som ikke ble solgt i den valgte perioden, vil vi få feltverdiene Motpart, Avtale, Mengde, Sum= Null. Denne forespørselen:

SELECT ReferenceNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty, SalesTurnover.Counterparty Agreement, SalesTurnover.QuantityTurnover AS Quantity, SalesTurnover.CostTurnover AS Cost FROM Reference.Nomenclature AS ReferenceNomenclature LEFT.Nomenclature LEFT CONNECTION. clature.Link = SalgOmsetning.Nomenklatur

Her er resultatet:

Motpart Avtale Nomenklatur Mengde Sum
null null _Test1 null null
LLC "Horns and Hooves" Avtale 1 Tøfler 10 1200
"Gazprom" Kul kontrakt Støvler 5 13000
null null Kalosjer null null
null null Skifer null null

I dette eksemplet var det ingen salg av varene: «Oversko» og «Tøfler»

Og alt ville være bra, hvis vi grupperer prøven etter motpart, vil alle usolgte varer falle inn i en egen gruppe, der Motpart = Null, men klienten ønsker å ha et tilfeldig utvalg i rapporten av motpartsfeltet (naturligvis dette betyr motparten fra salgsregisteret). Hva burde jeg gjøre? Tross alt trenger vi faktisk bare å filtrere tabellen Salg. Hvis vi bruker autofullføring i ACS-konstruktøren, vil de tilgjengelige utvalgsfeltene inkludere feltet Motpart, alt ser ut til å være i orden, men når vi utfører en rapport med utvalg etter motpart, vil vi miste alle poster fra forbindelsen med varen. La oss for eksempel angi valget: Motpart = LLC "Horns and Hooves". Resultatet vil se slik ut:

Ikke i det hele tatt det vi trenger, ikke sant?

For å løse problemet kan du selvfølgelig legge til en parameter i spørringen, for eksempel til parameterne til en virtuell tabell Salg Omsetning, men samtidig går fleksibiliteten til å angi type sammenligning tapt.

Det er en løsning: for dette i spørringsbygger på fanen Datasammensetning => Tabeller legg til et betingelsesfelt i de virtuelle tabellbetingelsene Salg Omsetning og endre kallenavnet hans til Motpartsvalg

For ikke å forvirre brukeren med utvalgsfelt, vil vi deaktivere betingelsesfeltet Motpart og endre tittelen for feltet Motpartsvalg


Som et resultat av å utføre denne ordningen med valg aktivert av motpartsfeltet, vil den resulterende spørringen ha formen:

SELECT Reference Nomenclature.Link AS Nomenclature, SalesTurnover.Counterparty AS Counterparty, SalesTurnover.Counterparty Agreement AS Motpartsavtale, SalesTurnover.QuantityTurnover AS >Quantity, SalesTurnover.CostTurnover AS Cost, PRESENTATIONOver.Counterpartyn Agreement(SalgsTurnover.Counterpartyn Agreement) Salg Omsetning. Counterparty) AS CounterpartyIntroduction, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature LEFT CONNECTION Register Accuulations.Sales.Turnover(&P , , , Counterparty = &P3 ) AS SalesTurnover.Link SprNomenesclature =Turnover.Link SprNomenesclature

Og følgelig resultatet:

Motpart Avtale Nomenklatur Mengde Sum
null null _Test1 null null
LLC "Horns and Hooves" Avtale 1 Tøfler 10 1200
null null Støvler null null
null null Kalosjer null null
null null Skifer null null

Test1 er en gruppe i nomenklaturkatalogen der alt ligger

Vedlagt publikasjonen er XML-skjemaet til rapporten brukt i publikasjonen. Jeg opprettet kretsen i Integrated Automation, men jeg tror alt vil fungere bra i både UPP og UT 10

Oppsummering

Dette eksemplet viser hvordan du oppretter dine egne valginnstillinger i tilgangskontrollsystemet og deaktiverer de automatisk opprettede hvis du designer en krets med flagget aktivert Autofyll.

Hvis du har nok erfaring til å lage kretser uten å bruke Autofyll– da gir ikke dette rådet mening.

Programvare brukt

  • Skjermbildeprogram SnimOK!
  • XML-filredigerer

Merk følgende! Dette er en introduksjonsversjon av leksjonen, hvis materiell kan være ufullstendig.

Logg inn på siden som student

Logg på som elev for å få tilgang til skolemateriell

Datakomposisjonssystem 1C 8.3 for nybegynnere: tilkobling av datasett

  • Skriv en rapport som viser kunder og deres favorittprodukter. Hver klient har en favorittfarge, og hvert produkt har sin egen farge - basert på disse fargene må du bestemme "favoritten" til produktet. For eksempel, hvis Andreys favorittfarge er rød, vil en av favorittmatene hans være tomater (de er røde).
  • Bruk to sett med data i rapporten. Det første settet er data fra katalogtabellen "Clients". Den andre er data fra "Mat"-katalogtabellen.
  • Implementere forbindelse mellom disse to settene, slik at rapporten bare inneholder favorittproduktene for hver klient.

Opprett en ny rapport

Åpne "Gastronom"-databasen i konfiguratoren og lag en ny rapport gjennom hovedmenyen:

Dokumenttype - "Ekstern rapport":

I form av en ny rapport, angi navnet "Leksjon 6" og klikk på "Åpne datasammensetningsdiagram"-knappen:

La standard skjemanavn:

Legger til det første datasettet

I diagrammet som åpnes, gå til fanen "Datasett" og velg "Legg til datasett - spørring" med det grønne plusstegnet:

Ring forespørselskonstruktøren:

Vi angir "Kunder"-tabellen og feltene som må hentes fra forespørselen:

Legger til et annet datasett

Legg til et andre sett med data:

Velg det (DataSet2) og ring spørringskonstruktøren igjen:

Vi angir tabellen i "Mat"-katalogen og feltene som må hentes fra forespørselen:

Den resulterende forespørselsteksten var:

Vær oppmerksom på at vi for øyeblikket har to datasett i rapporten: Datasett1 og Datasett2. Hver har sin egen forespørselstekst og data.

Gjør navn mer beskrivende

For klarhets skyld, la oss gi nytt navn til DataSet1 til Kunder og DataSet2 til Food.

Gjør dette ved å dobbeltklikke på hvert av settene:

Vi kan bruke dataene fra hvert sett i rapporten vår. Vi vil få tilgang til disse dataene gjennom felt.

For øyeblikket har "Kunder"-settet følgende felt: "Navn" og "Favorittfarge", og "Mat"-settet har: "Navn" og "Farge".

Vi ser at navnene overlapper hverandre og vi kan lett bli forvirret. Så la oss endre feltnavnene for å være mer beskrivende.

Velg "Klienter"-settet og endre feltnavnene slik:

Velg deretter "Mat"-settet og endre feltnavnene slik:

Kaller opp innstillingskonstruktøren

Til slutt, gå til "Innstillinger"-fanen og klikk på tryllestaven for å få opp innstillingsdesigneren:

Rapporttype - "Liste...":

Velg felt for rapporten fra begge settene:

Ser du hvorfor det var så viktig å endre feltnavnene? På stadiet med datasammensetningsinnstillinger ser vi ikke hvilke sett disse feltene er fra. Vi ser bare navnene deres.

Sjekker rapporten

Vi lagrer rapporten og genererer den i brukermodus:

Ja. Ok, men egentlig ikke. En såkalt krysssammenføyning av to sett har skjedd (du bør være godt kjent med dette fra sammenføyningene i spørringene som vi studerte i tidligere moduler). Hver post fra Kunder-tabellen har en tilsvarende post fra Mat-tabellen.

Men fra alle disse postene må vi bare la de som har feltet "Customer's FavoriteColor" er lik feltet "FoodColor":

Vi kobler sammen to sett med data

For å gjøre dette vil vi koble sammen to sett med data (Kunder og Mat) ved å bruke feltene Kundens favorittfarge og Matfarge.

Gå til fanen "Datasettkoblinger" og klikk på plussknappen for å legge til en ny lenke:

Vi konfigurerer parametrene som i figuren nedenfor:

Jeg skal lage en forklaring.

Kilde og mottaker for kommunikasjon. Vel, alt er klart her. Vi angir det første settet (kunder) og det andre settet (mat) med data. Jeg vil spesielt gjøre oppmerksom på at kommunikasjonen vil skje etter prinsippet ytre venstre skjøt(vi dekket det i emnet forespørsler i tidligere moduler). Basert på dette må du velge hvilket sett som skal være kilden og hvilken mottaker.

Uttrykkskilde. Vi angir her et uttrykk eller ganske enkelt et felt fra kildedatasettet (vi spesifiserte ClientFavoriteColor-feltet fra klientsettet her).

Mottaker uttrykk. Vi angir her et uttrykk eller ganske enkelt et felt fra mottakerdatasettet (vi indikerte ColorFood-feltet fra Food-settet her).

Dermed vil denne koblingen bare etterlate de radene fra forrige liste hvor Kundens favorittfarge-felt er lik FoodColor-feltet.

La oss lagre rapporten og kjøre den i brukermodus:

Flott!

Jeg skal lage en forklaring om feltet " Kommunikasjonstilstand", om hvilke nybegynnere programmerere så ofte slår spydene sine.

Tilkoblingsbetingelsen er et hjelpefelt. Du kan skrive uttrykk der involverer bare felt fra datasettet spesifisert i koblingskilden.

I dette tilfellet, for alle rader fra lenkekilden, vil dette uttrykket (lenkebetingelsen) bli sjekket før koblingen lages. Og hvis dette uttrykket er TRUE, vil det bli gjort et forsøk på å etablere koblinger mellom denne raden og rader fra lenkemottakeren. Hvis uttrykket er FALSE, vil ingen slike forsøk bli gjort.

Logg inn på siden som student

Datasammensetningssystem 1C 8.3 for nybegynnere: første rapport om SKD

Hvis du ikke har lest introduksjonen til denne modulen, vennligst les den: .

For å fullføre leksjonene du trenger 1C 8.3 (ikke lavere 8.3.13.1644 ) .

Hvis du allerede har 1C versjon 8.3 installert, bruk den. Hvis ikke, last ned og installer den pedagogiske versjonen, som 1C produserer spesielt for pedagogiske formål: .

Følgende snarvei skal vises på skrivebordet ditt:

For alle leksjonene i denne serien vil vi bruke Gastronom-databasen jeg har utarbeidet. Det er helt sammenfallende med grunnlaget vi brukte i skolemodulene når vi studerte spørringer. Derfor forventer jeg at du er kjent med referansebøker og dokumenter.

Hvis du har slettet den, last den ned igjen ved å bruke følgende, pakk den ut og legg den til listen over databaser.

Til slutt er arbeidsbenken satt opp og nå skal vi lage vår første rapport sammen ved hjelp av datasammensetningssystemet. Det vil være veldig enkelt å demonstrere de generelle egenskapene til et datasammensetningssystem (forkortet SKD).

Sette et mål

Hensikten med denne leksjonen- Lag en rapport som, i brukermodus, viser en liste over klienter med følgende felt:

  • Navn
  • Gulv
  • Kundens favorittfarge.

Rapporten skal være ekstern. Dette betyr at den vil bli opprettet og konfigurert i konfiguratoren, og deretter lagret som en separat (ekstern) fil på datamaskinen.

For å generere en slik rapport i 1C, må brukeren starte databasen i brukermodus, åpne denne filen og klikke på "Generer"-knappen.

Gå!

Opprette en rapport

Vi lanserer konfiguratoren for Gastronom-databasen:

Fra hovedmenyen, velg "Fil" -> "Ny...":

Velg "Ekstern rapport":

Opprette et datalayoutdiagram inne i rapporten

Vinduet for å lage en ekstern rapport åpnes. For navnet, skriv inn: " Leksjon 1", og trykk deretter på knappen " Åpne datasammensetningsdiagram":

Designeren for oppretting av skjema har startet. Vi er enig med standardnavnet " MainData Layout Schema"og trykk på knappen" Klar":

Hovedarbeidsvinduet har åpnet seg, med mange faner og felt, der vi vil konfigurere dataoppsettet vårt.

Det er ingen grunn til å være redd - det er virkelig mange muligheter her, men vi trenger ikke alle. Spesielt i den første leksjonen.

Nå er vi på bokmerket " Datasett"Vi blir der."

Vi skriver en forespørsel gjennom konstruktøren

Datasammensetningssystemet (forkortet som DCS) krever at vi skal data, som den vil vise til brukeren.

Den enkleste måten - skrive en forespørsel til basen. På skolen lærte vi å skrive og forstå forespørsler - så jeg forventer at du har de nødvendige ferdighetene.

Klikk på grønn plusstegnet og i rullegardinlisten velg elementet " Legg til datasett - spørring":

Vår oppgave er å skrive forespørselsteksten i dette feltet. Har du glemt hvordan du gjør dette ennå?

Jeg skal gi deg et hint:

I denne spørringen har vi valgt tre felt (" Navn", "Gulv"Og" Favoritt farge") fra tabellen " Directory.Clients".

Men ikke skynd deg å skrive denne teksten i "Forespørsel"-feltet manuelt.

Nå vil vi lage den samme forespørselen visuelt, bare ved å bruke musen. Denne metoden kalles " Spørringskonstruktør".

For å ringe denne konstruktøren, klikk på knappen " Spørringskonstruktør..." i øvre høyre del av "Request"-feltet:

I vinduet som åpnes, dra tabellen " Kunder" fra den første kolonnen til den andre for å indikere at det er fra denne tabellen vi vil spørre etter dataene:

Det ble slik:

Deretter åpner vi bordet " Kunder"i andre kolonne ved tegn" I tillegg til"for å se alle feltene og dra feltet" Navn" fra den andre kolonnen til den tredje for å indikere at fra denne tabellen må vi spørre etter "Navn"-feltet:

Det ble slik:

La oss gjøre det samme med feltene" Gulv"Og" Favoritt farge". Resultatet blir slik:

Klikk på "OK"-knappen for å avslutte spørringsbyggeren og se at søketeksten automatisk legges til i "Spørring"-feltet.

Dessuten, basert på teksten i forespørselen, trakk 1C selv ut navnene på feltene (området over forespørselen) som vil bli brukt av datasammensetningsskjemaet:

Nå som vi har satt sammen en forespørsel, vet ACS hvordan de skal innhente data for rapporten.

Sette opp datapresentasjon

Det forblir på en eller annen måte visualisere disse dataene for brukeren i form av et trykt skjema. Og det er her ACS kan gjøre underverker!

For å lage et slikt mirakel, la oss gå til fanen " Innstillinger" og klikk på knappen for innstillingsdesigner ( tryllestav):

I vinduet som åpnes, spesifiser rapporttypen " Liste" og trykk " Lengre":

I neste vindu velger du (ved å dra) feltene som skal vises i listen (dra alle de som er tilgjengelige for oss: " Favoritt farge", "Navn"Og" Gulv"):

La oss få dette resultatet og trykke på knappen " OK":

Innstillingsdesigneren lukket og elementet " Detaljerte oppføringer":

Rapporten er klar, la oss sjekke den. For å gjøre dette, lagre først rapporten som en ekstern fil.

Lagre rapporten som en fil

Åpne hovedmenyelementet " Fil"->"Lagre":

Jeg lagrer den på skrivebordet mitt under navnet " Leksjon 1":

Kontrollerer rapporten i brukermodus

Til slutt, la oss lukke konfiguratoren og gå til databasen vår i brukermodus:

Brukernavn "Administrator", uten passord:

Gjennom menyen, velg elementet " Fil"->"Åpen...":

Og spesifiser rapportfilen (jeg lagret den på skrivebordet under navnet "Lesson1.erf":

Rapportskjemaet er åpnet, klikk på knappen " Skjema":

Klar! Her er vårt utskriftsmateriale med en liste over kunder, deres favorittfarge og kjønn:

Det utskrivbare skjemaet kan enkelt skrives ut. For å gjøre dette, velg bare elementet " Fil"->"Tetning...":

Akkurat sånn, uten programmering, klarte vi å lage en fullverdig rapport som brukere kan åpne i sine databaser, generere og skrive ut.

studenter - jeg svarer på mail, men først se på.

Logg inn på siden som student

Logg på som elev for å få tilgang til skolemateriell

I min forrige artikkel skrev jeg allerede at 1C er en paradoksal plattform. Datasammensetningssystemet er et av disse paradoksene. SKD er designet for å designe komplekse rapporter og innebærer å erstatte "manuell" rapportprogrammering med design i et multifunksjonelt verktøysett. Muligheten til å bruke adgangskontrollsystemer dukket opp i den åttende versjonen, men det tok lang tid før versjon 8.2 dukket opp slik at 1C kunne bruke den i sine standardprodukter. På den ene siden er ACS et multifunksjonelt verktøysett, som du kan bruke til å lage svært komplekse rapporter uten en eneste kodelinje. Imidlertid har adgangskontrollsystemet en ganske høy adgangsbarriere; å lære og begynne å bruke det fullt ut "i farten" er veldig vanskelig, fordi grensesnittet ikke er helt intuitivt, og de mest komplette bruksanvisningene er kun tilgjengelige i form for betalt litteratur.

I prosessen med min studie av SKD dukket det opp et problem. Det er nødvendig å hente data fra en tredjeparts tabell med verdier ved å bruke et spørringsspråk og deretter betjene disse dataene som med lignende data fra databasetabeller (reduksjonsoperasjoner, gruppering og så videre). I det klassiske formatet vil vi lage en spørring som mottar informasjon fra tabellen som sendes til spørringen som en parameter.

Request = New Request(
"VELGE
| Tabell.Nomenklatur,
| Bord. Lager
|FRA
| &TK AS-tabell");
Request.SetParameter("TZ", TZ);

Men med SKD er ikke alt så enkelt. Akk, det er umulig å utføre operasjonen beskrevet ovenfor i datasammensetningssystemet. Systemet har imidlertid implementert muligheten til å laste eksterne verditabeller.

Her er det verdt å gjøre en kort digresjon og snakke om datasett. Datasett er informasjonskilder som datastyringssystemet mottar data fra som det senere kompilerer til en rapport. Datasett er delt inn i typer, hovedsakelig ved å bruke "Query"-typen, i kroppen som programmereren skriver en spørring til databasen. "Objekt"-typen brukes til å laste data fra eksterne objekter. I begge tilfeller er utdata et visst sett med felt oppnådd som et resultat av å utføre en forespørsel eller laste inn et eksternt objekt. Senere kan disse feltene manipuleres på «Innstillinger»-fanen, sammen med detaljerte innstillinger for rapportstrukturen. For å koble sammen forskjellige sett gir ACS muligheten til å indikere forbindelser mellom datasett i fanen med samme navn. Disse koblingene er en direkte analog av venstre sammenføyning i en klassisk spørring. Det bør imidlertid tas i betraktning at forespørsler i et datasett ikke "vet" om eksistensen av andre datasett; til syvende og sist vil relasjonene mellom datasettene påvirke utformingen av dataene i henhold til strukturen spesifisert i " Innstillinger"-fanen.

La oss detaljere problemet ned til et eksempel. Det er en standardrapport: Lønnsoppgaver for organisering av konfigurasjon ZiK 8. Det er nødvendig at beregningstypene i rapporten grupperes i bestemte grupper. Beregningsvisning-gruppe-korrespondanser lagres i en ekstern verditabell. For å laste det inn i hoveddatalayoutskjemaet, lager vi et "datasettobjekt" med navnet "Grupper" (Figur 2). Vi kobler til "spørringsdatasettet" - "Påløp" etter type beregning (figur 3). I "forespørselsdatasettet" - "Aktiveringer" er det informasjon for grupper, vi sletter alle oppføringer. Etterpå, på fanen "Innstillinger" kan vi bruke "Gruppe"-feltet, hvis verdi lastes inn fra en ekstern datakilde (figur 4). I rapportgenereringsfunksjonen supplerer vi lasting av eksterne data.

Funksjon GenerateReport(Resultat = Udefinert, Dekrypteringsdata = Udefinert, OutputInReportForm = True) Eksporter

//å skaffe eller danne den nødvendige tabellen med "Grupper"-verdier og skrive den til variabelen med samme navn

ExternalData = New Structure();//opprett og fyll den eksterne datastrukturen
ExternalData.Insert(Groups);

UserPanelValue = TypicalReports.GetUserPanelSettingsValuesofObject(ThisObject);
DefaultSettings = SettingsComposer.GetSettings();
TypicalReports.GetAppliedSetting(ThisObject);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, ExternalData);
SettingsLinker.LoadSettings(DefaultSetting);
Returner Resultat;

EndFunction

Hvis vi skulle lage en rapport fra bunnen av, ville lanseringskoden for rapportgenerering sett slik ut:

ExternalDataSets = ny struktur;
ExternalDataSets.Insert("Grupper", grupper); //Grupper - ønsket verditabell
DataCompositionSchema = GetLayout("MainDataCompositionSchema"); //vår layout med dataflytdiagram
Innstillinger = DataCompositionScheme.DefaultSettings;
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutComposer.Execute(DataLayoutSchema, Settings);
DataCompositionProcessor = newDataCompositionProcessor;
DataCompositionProcessor.Initialize(LayoutLayout, ExternalDataSets);
TabDoc = Nytt TabularDocument;
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(TabDoc);
OutputProcessor.Output(DataCompositionProcessor);

Lese 9660 en gang

God dag, mine lesere! I dag vil vi fortsette å se på det grunnleggende i layoutsystemet. I denne artikkelserien lærte du hva et adgangskontrollsystem er og ble kjent med hovedkomponentene i et adgangskontrollsystem. Vi så også på inndataene for å bygge en rapport og lærte hovedstadiene for å kjøre en rapport på et tilgangskontrollsystem. I tillegg fikk mange muligheten til å teste kunnskapene sine ved å bestå en kort prøve. Nå kan du ta en titt på innholdet i artikkelen og se hva som skal dekkes i den.

Datasett - spørring.

  1. I motsetning til en vanlig spørring, er det ingen RESULTS-klausul i datasammensetningsspørringen. I stedet genereres totaler på fanen "Ressurser". På denne fanen velger du feltene du ønsker å få endelige uttrykk for. Og på fanen "Innstillinger" er det angitt i hvilken seksjon resultatene vil bli oppnådd, det vil si at passende grupperinger opprettes her og ressurser beregnes fra dem. Du kan lese mer om dette i artikkelen.
  2. Det neste punktet gjelder valginnstillingene. Det er to utførelsesmuligheter.
    1. Gjennom innstillingene for rapportalternativer. Dette kan gjøres på fanen "Innstillinger" - "Valg". Hvis vi bruker dette alternativet, så er det det mest fleksible, siden vi kan spesifisere forskjellige typer sammenligninger som selv brukeren kan velge. I tillegg, når du bruker dette alternativet, pålegges filtreringsbetingelser i selve spørringen. Hvis rapporten er basert på en batch-spørring som bruker midlertidige tabeller, vil valget påvirke alle tabellene i batch-spørringen der utvalgsfeltet forekommer.
    2. På forespørselsnivå. Hvis vi bruker en spørring, vil vi ikke kunne bruke noe annet enn likestillingsoperasjonen.
      Unntaket er tilfellet når vi trenger å utføre en "hard" filtrering av dataene etter en viss verdi. La oss si, etter oppregningsverdi. I "Parameters"-fanen kan vi angi en betingelse. Hvis vi aktiverer «Limit Availability»-flagget, vil ikke brukeren kunne kansellere denne betingelsen.
  3. Det er også mer riktig å bruke sortering på nivå med rapportalternativinnstillinger.
    1. Hvis du spesifiserer et sorteringsfelt i forespørselen, vil brukeren spesifisere et annet felt i oppsettet av sin rapportversjon, da vil vår innstilling gjort på forespørselsnivå ha lavest prioritet. Sorteringen som er satt av brukeren i rapportvariantens oppsett vil bli utført først. Derfor, hvis du trenger å angi sorteringen "som standard", bruker vi innstillingene for rapportalternativet i konfiguratoren.
    2. Hva om du trenger å sette opp "hard" sortering i en rapport slik at brukeren ikke kan endre den? Deretter setter vi sortering på spørringsnivå, og på fanen "Datasett" setter vi opp en feltbegrensning. Velg ønsket datasett og merk av i boksen i kolonnen "Feltbegrensning" - "Bestilling".

Virtuelle tabellparametere.

  • Konstruksjonen av virtuelle tabeller over regnskapsregistre, akkumuleringsregistre og informasjonsregistre avhenger av en gitt dato. Dette kan enten være én dato eller et intervall, for eksempel for en tabell over saldoer og omsetning. SDS er opprettet på en slik måte at hvis rapporten er basert på en virtuell tabell, så er det nødvendig å la brukeren velge for hvilket intervall eller på hvilken dato rapporten skal genereres. SKD legger automatisk til de nødvendige periodeparametrene til layoutdiagrammet.
  • Hvis en virtuell saldotabell eller en virtuell tabell med informasjonsregistre er valgt i spørringen, blir en parameter kalt "Periode" automatisk lagt til.
  • Hvis en virtuell tabell over saldoer og omsetning eller en virtuell tabell over omsetning er valgt i forespørselen, blir parametrene "Start of Period" og "End of Period" automatisk lagt til.
  • Hva gjør du hvis du trenger å få saldo på slutten av perioden? Det er to måter:
    1. Gå til fanen "Parametere" og i parameteren "Periode" i kolonnen "Uttrykk" skriv følgende:
      &EndPeriode. Vi vil også aktivere flagget "Begrens tilgjengelighet".
    2. Vi kvitter oss fullstendig med parameteren "Periode" og erstatter den med parameteren "End of Period". La oss konfigurere en valgfri virtuell tabellparameter:
      • Gå til "Datasett"-fanen og klikk på "Query Builder..."-knappen.
      • På "Data Composition"-fanen i øvre venstre hjørne, klikk på knappen for å åpne "Virtuelle tabellalternativer"-dialogen (dette er en grå firkantet knapp med et bilde av et tannhjul på bakgrunnen av et lite bord).
      • I "Periode"-feltet i dialogboksen skriver vi: &End of Period.
      • Nå i teksten til datasettforespørselen i parametrene til den virtuelle tabellen, vil denne parameteren vises omgitt av krøllete klammeparenteser:
Akkumulasjonsregister. Gjenværende varer. Resterende(((&EndPeriod) ), ) AS Resterende

De krøllete klammeparentesene indikerer en språkutvidelse for datasammensetning. Dette indikerer også at denne parameteren er valgfri. Dette betyr at hvis det ikke er definert i datasammensetningsskjemaet, vil saldoene innhentes per gjeldende dato.

Spørringsspråkutvidelse.

Dette er spesielle instruksjoner som er vedlagt krøllete bukseseler i forespørselsteksten. Disse instruksjonene angir feltene og parameterne som kan manipuleres når du setter opp en rapportversjon. Dataene fra de krøllete klammeparentesene vil være tilstede i layoutdiagrammet selv om avmerkingsboksen Autofullfør er deaktivert.

Når et spørringsdatasett opprettes, fylles de tilgjengelige feltene i datasammensetningsskjemaet automatisk ut basert på den opprettede spørringen (avmerkingsboksen "Autofyll" er valgt på fanen "Datasett").

Hvordan fungerer autofullføring av tilgjengelige datasammensetningsskjemafelt?

    1. Felt fra søkevalglisten og deres underordnede felt blir tilgjengelige.
    2. Hvis vi velger fra akkumuleringsregisteret, blir til og med registerfelt som ikke er inkludert i forespørselen tilgjengelig i datasammensetningsfeltene. Men disse feltene er bare tilgjengelige for valg (i betingede uttrykk)
      og de kan ikke brukes som utdatafelt.
    3. Parametrene til de virtuelle tabellene "Periode", "Start of Period" og "End of Period" blir
      tilgjengelig for valg.
    4. Hvis en "hard" betingelse er spesifisert i forespørselsteksten, vil denne parameteren også bli lagt til "Parameters"-fanen.

Hvis avmerkingsboksen Autofullfør er tømt, fjernes feltene i datasammensetningsskjemaet, men parametrene omsluttet av krøllete klammeparenteser i forespørselsteksten forblir.

Hvordan fylle ut feltene i datasammensetningsskjemaet selv?

Fjern merket for "Autofyll" på fanen "Datasett".

Klikk på "Query Builder..."-knappen. La oss lage følgende forespørsel:

VELG Rester. Nomenclature AS Nomenklatur, Rester. Mengde AS MengderegisterAkkumulering. Gjenværende varer. Resterende(((&EndPeriod) ), ) AS Resterende

På "Tabell"-fanen kan vi angi virtuelle tabellparametere for alle tabeller.

Nå på "Data Layout" -fanen, velg "Felt" -fanen. Her setter vi utvalgsfeltene som
vil bli presentert i layoutdiagrammet.

"Og.."-feltet betyr at underordnede poster vil bli inkludert i utvalget
felt av kompleks type, som kataloger og dokumenter, etc. Hvis feltet er et tall, vil det være umulig å sette et flagg i "Og.."-feltet.

La oss velge to felt "Nomenklatur" og "Antall". For "Nomenklatur"-feltet, sett "I.."-flagget,
slik at underordnede poster velges. Du vil få følgende forespørsel:

VELG Rester. Nomenclature AS Nomenklatur, Rester. Mengde AS Mengde (VELG nomenklatur. * , Mengde) Akkumuleringsregister. Gjenværende varer. Resterende(((&EndPeriod) ), ) AS Resterende

I den nye forespørselen, i krøllete klammeparenteser, har en annen SELECT-seksjon dukket opp - dette er utvidelsesteksten som indikerer feltene som vil være tilgjengelige i oppsettet. "Nomenklatur.*"-feltet indikerer at "Nomenklatur"-feltet og dets underordnede detaljer, for eksempel "Kode", "Navn" osv. vil være tilgjengelig. Så vi fylte ut layoutfeltene selv.

Men nå kan vi ikke bruke felt i layoutforhold. Hvis du går til fanen "Innstillinger" og velger fanen "Utvalg", kan du ikke angi betingelser for noen av feltene vi valgte i forrige avsnitt. Hvorfor?

Betingelser for virtuelle tabellparametere må også spesifiseres på «Data Composition»-fanen i spørringsdesigneren. Øverst til venstre klikker du på knappen for å åpne dialogboksen "Virtuelle tabellparametere".
(dette er en grå firkantet knapp med et bilde av et tannhjul på bakgrunnen av et lite bord). I "Betingelse"-feltet i dialogboksen skriver vi: Nomenklatur. Nå i teksten til datasettforespørselen i parameterne til den virtuelle tabellen, vil denne "Nomenklatur" -parameteren vises omgitt av krøllete klammeparenteser:

Akkumulasjonsregister. Gjenværende varer. Saldo(((&Periodeslutt) ), ((Nomenklatur) )) AS-saldo

I det vanlige spørringsspråket ser spesifisering av en parameter slik ut: Nomenklatur = &Nomenklatur. Men i søkespråkutvidelsen skrives det annerledes. Bare feltnavnet er angitt. Her spesifiserer vi ikke driften av likhet, ulikhet, eller i hierarki, siden brukeren selv vil velge ønsket operasjon i sine innstillinger.

På "Data Composition"-fanen i Query Builder ser vi en annen fane, "Betingelser". Det er nødvendig å angi betingelsene for WHERE-klausulen i søkespråkutvidelsen. Velg "Antall"-feltet. Dette feltet er nå tilgjengelig i vilkårene på fanen "Innstillinger" - "Utvalg". Og nye linjer dukket opp i forespørselsteksten, omsluttet av krøllete klammeparenteser.

(HVOR Rester. Antall)

Hvis valg etter mengdefeltet er spesifisert, vil denne setningen bli satt inn i den endelige forespørselen. Hvor type tilstand og sammenligningsverdi vil bli bestemt ved å sette opp rapportalternativet.

Så jeg tror det er nok materiale for i dag. Hvis det er noen uklare punkter, ikke nøl med å spørre, for det er derfor det er mulig å kommentere. Dette materialet vil bli klargjort for å bli festet snart, så abonner på oppdateringer på nettsiden vår slik at du ikke går glipp av noe!

Og i denne serien med leksjoner vil vi se på funksjonene til SKD-uttrykksspråket, snakke om funksjonene til layoutsystemet og også analysere de grunnleggende innstillingene til layoutfeltene. Lykke til med å forstå dette vanskelige materialet!

På slutten av artikkelen vil jeg anbefale deg en gratis fra Anatoly Sotnikov. Dette er et kurs fra en erfaren programmerer. Den vil vise deg på eget grunnlag hvordan du bygger rapporter i tilgangskontrollsystemet. Du trenger bare å lytte nøye og huske! Du vil få svar på følgende spørsmål:
  • Hvordan lage en enkel listerapport?
  • Hva er felt-, bane- og tittelkolonnene på "Felter"-fanen for?
  • Hva er begrensningene for layoutfelt?
  • Hvordan konfigurere roller riktig?
  • Hva er rollene for layoutfelt?
  • Hvor finner jeg fanen for datasammensetning i en spørring?
  • Hvordan konfigurere parametere i tilgangskontrollsystemet?
  • Det blir enda mer interessant...
Kanskje du ikke burde prøve å surfe på Internett selv på jakt etter nødvendig informasjon? Dessuten er alt klart til bruk. Bare sett i gang! Alle detaljene om hva som er i de gratis videoopplæringene er på forfatterens side softmaker http://www..pngsoftmaker 2015-12-07 14:51:12 2018-06-12 13:14:13 Datasammensetningssystem (DCS). Del 2.