ACS er ikke bare for rapporter - implementering av universelle valg. Bruk av utvalg i SKD SKD overføring av verdi i utvalg

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 VENSTRE CONNECTIONT.Sa. Spr.Kl. .Link = Salgsomsetning. 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 SprNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty AS Counterparty, SalesTurnover.Counterparty Agreement AS Motpartsavtale, SalesTurnover.QuantityTurnover AS >Quantity, SalesTurnover.CostTurnover AS Cost, PRESENTASJONOVERSIGT AS Motpartsavtale(SalgsTurnover.SelgsTurnover AS) omsetning.Motpart ) AS CounterpartyPresentation, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature LEFT CONNECTION Register Accuulations.Sales.Turnover(&P , , , Counterparty = &P3 ) AS SalesTurnover BY =SpNomenclurn.Link.

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 Autofullfør.

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

Programvare brukt

  • Skjermbildeprogram SnimOK!
  • XML-filredigerer

Hva kan SKD brukes til?

Etablert mening er for rapporteringsformål.

Faktisk ACS-funksjoner går utover å lage universelle rapporter.

Og i dag skal vi vise hvordan ved hjelp av tilgangskontrollsystemet vil brukeren kunne konfigurere fleksibelt datavalg. Videre vil dette valget bli brukt ved innhenting og behandling av data.

Til hvilke oppgaver vil dette være nyttig?

La oss gi eksempler fra typiske konfigurasjoner:

  • Behandler "Laster opp data til nettstedet"
  • Utforming av prisliste
  • Laster opp data til TSD (datainnsamlingsterminal)
  • Segmentering av produkter, partnere
  • Dannelse av ordre (kunder, leverandører) etter behov
  • Reparasjonsplanlegging i 1C:ERP.

Det vil si at verktøyet er nyttig der det er nødvendig for å gi brukeren et bredt utvalg alternativer.

Opprette et tilfeldig utvalg i en kontrollert form ved hjelp av ACS

Leksjonen tar for seg arbeid med innstillingsbygger datalayoutskjemaer:

  • Utvalg på skjemaet
  • Programvareforbindelse mellom innstillingsbyggeren og layoutdiagrammet
  • Lage standardvalg i tilgangskontrollsystemet.

Motta data fra databasen med filtrering etter ACS-valg

Videoen viser hvordan du kan velge data ved å bruke det tidligere angitte valget i innstillingsbyggeren.

Et "skummelt" objekt brukes - ProsessorOutputResultCompositionDataIntoValueCollection.

Faktisk er ikke alt så komplisert - på 8 minutter løser vi problemet.

Lagring av SKD-valg i informasjonsbasen

I leksjonen skal vi se lagring av ACS-byggerinnstillinger ved å bruke Value Store.

La oss finne ut hvordan du løser dette problemet i "1C: Manufacturing Enterprise Management 1.3"-konfigurasjonen.

Nyt å se! :)

Generelt gir ACS mange muligheter.

Her er noen "triks" som vi ikke engang hadde tid til å beskrive på kurssiden.

Hvis du trenger å samle data fra ulike kilder, det er tre alternativer.

Du kan prøve å komponere en "universell" spørring for alle data (lange), du kan vise dataene til flere spørringer i en løkke (stiv, lite fleksibel struktur) - eller du kan ganske enkelt bruke ACS og tilkobling av datasett i stedet for én forespørsel.

Samtidig er det viktig å få korrekte resultater - dette har sine særegenheter hvis det er flere kilder

Ved hjelp av SKD kan du enkelt få et øyeblikksbilde av det siste for hver dato i rapporten.

Eller for klarhetens skyld - få produktprisen for hver salgsdato.

Ved hjelp av ACS kan du organisere viser alle datoer for perioden i rapporten, og ikke bare de som det var data for i rapporten (legger til datoer uten programmering, bare med mulighetene til tilgangskontrollsystemet)

Ved å bruke ACS kan du organisere nestede grupperinger med tillegg av perioder (år/kvartal/måned osv.)

Ordne rapporten som ønsket, for eksempel vis kolonneoverskriften vertikalt og dataene i denne kolonnen horisontalt.

La brukeren velge hvor ofte data skal vises i rapporten (etter år, kvartal, måned) - kun etter innstillinger, uten å redigere rapportmodulen.

Hvordan kombinere flere forhold ved å bruke OR i en rapport? Dette alternativet er for eksempel ikke tilgjengelig i rapportbyggeren, men er tilgjengelig i ACS

Hvis du viser sammendragsdata i form av et diagram, må du være i stand til å kontrollere utseendet nøyaktig: synligheten til markører for en serie, vekslende farger på diagramserier, skille tidligere data fra fremtidige data på et diagram med en vertikal linje , etc.

Selvfølgelig er det nyanser som må tas hensyn til.

Ved opprettelse av rapporten feilsøkte utvikleren spørringsteksten, men når denne spørringen brukes i en rapport om tilgangskontrollsystemet, gir systemet et feil resultat.

Derfor er det viktig å kunne få tak i spørringen som systemet faktisk kjører for å hente data fra databasen, og å feilsøke en slik spørring.

Når du legger til detaljer til en dokumentregistrator til en rapport, produserer systemet noen ganger "feil" åpnings- og sluttbalanser.

Derfor er det viktig å konfigurere feltene i rapporten på adgangskontrollsystemet riktig slik at saldoene vises riktig både med og uten detalj til dokumentet.

Rapportresultatet kan endres avhengig av hvor valg etter ressursverdi er konfigurert - på rapportnivå og på nivå for en individuell gruppe må du overvåke dette.

Hvis du vil mestre ACS profesjonelt og daglig bruke i arbeidet ditt, meld deg på kurset:

Brukerstøtte - 2 måneder. Kursomfang – 34 undervisningstimer.

Ikke utsett studiene!

For å skrive prosessering måtte programmerere ofte bruke spørringer for å skaffe data og deretter behandle dem. Dataene ble på sin side hentet fra forespørselen. Vel, en forespørsel uten valg eller filter er sjelden. La oss snakke om valg i slike forespørsler, ved å bruke eksempelforespørselen:

For å organisere valg etter motpart for brukeren i en vanlig form, måtte programmereren plassere tre elementer på skjemaet, som så omtrent slik ut:

Hvor mye innsats tar det for en programmerer å beskrive ulike typer sammenligninger (like, ikke like, i en liste, i en gruppe...) og, basert på disse typene sammenligninger, avgrense sin endelige forespørsel om å innhente data.

La oss se på hvordan dette kan gjøres ved hjelp av ACS. La oss i behandlingen vår lage en layout med typen Data Composition Scheme og fylle den med forespørselen vår:

På fanen Innstillinger vil vi legge til en ny gruppering uten detaljer og, i vårt eksempel, Konto-feltet, siden vi til slutt vil få alt inn i verditabellen:

Og på fanen Utvalg legger du til motparten i utvalget:

La oss nå begynne å lage skjemaet. La oss vise utvalget som brukeren vil jobbe med, på selve behandlingen. Vi vil vise et element av typen Tabellfelt på skjemaet og gi det navnet Selection med datatypen Composer.Settings.Selection:

La oss nå lage hendelsesbehandlere for OnOpen-skjemaet og en behandler for å klikke på Kjør-knappen, koden er presentert nedenfor:

Perem layout; Prosedyre ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); Utdataprosessor = Ny utdataprosessor av resultatet av sammensetning av data til en samling av verdier; OutputProcessor.SetObject(Resultat); OutputProcessor.Output(CompositionProcessor); Hvis FormElements.Result.Columns.Quantity() = 0 Da FormElements.Result.CreateColumns(); slutt om; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = New SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Slutt på prosedyre

Behandlingen er klar, etter å ha startet den, kan du umiddelbart se i vårt utvalg motparten som har dukket opp i vårt utvalg, hvorfra du kan velge hvilken som helst type sammenligning, samt legge til flere utvalgslinjer ved å bruke detaljene i motpartskatalogen:

Det er alt, jeg håper denne artikkelen vil hjelpe deg med å forbedre fleksibiliteten til valg i behandlingen.

Kononov Sergey